在 JavaScript 中列舉物件屬性

Habdul Hazeez 2023年10月12日
  1. 在 JavaScript 中使用 for...in 列舉物件屬性
  2. 在 JavaScript 中使用 Object.keys 列舉物件屬性
  3. 在 JavaScript 中使用 Object.entries() 列舉物件屬性
  4. 在 JavaScript 中使用 Underscore.js 列舉物件屬性
在 JavaScript 中列舉物件屬性

本教程將教你使用不同的方法來列舉 JavaScript 物件的屬性。這些方法將使用內建的 JavaScript 功能,如 for...inObject.keysObject.entries

在 JavaScript 中使用 for...in 列舉物件屬性

你可以使用 for...in 列舉 JavaScript 物件屬性。但是,如果 JavaScript 符號是屬性名稱,它們將被忽略。

此外,for...in 返回繼承的可列舉屬性;你可以使用 hasOwnProperty() 方法來避免這種情況。hasOwnProperty() 方法確保返回的屬性屬於當前物件。

在下面的示例程式碼中,我們有一個具有一些屬性和值的物件。此外,屬性名稱之一是 JavaScript 符號。

當你使用 for...in 列舉物件時,結果將不包括 JavaScript 符號。

let Java = Symbol('Java');

let inventors = {
  'HTML': 'Sir Tim Berners-Lee',
  'JavaScript': 'Brendan Eich',
  [Java]: 'James Gosling',
  'PHP': 'Rasmus Lerdorf',
  'Ruby on Rails': 'DHH',
  'Python': 'Guido van Rossum'
}

for (let propName in inventors) {
  if (inventors.hasOwnProperty(propName)) {
    console.log(propName);
  }
}

輸出:

HTML
JavaScript
PHP
Ruby on Rails
Python

在 JavaScript 中使用 Object.keys 列舉物件屬性

你可以通過將物件作為引數傳遞給 object.keys() 來列舉物件屬性。結果是可列舉屬性名稱的陣列,按物件中出現的順序排列。

以下程式碼有一個包含星期幾及其數值的物件。我們只想獲取星期幾,所以我們在物件上使用 object.keys()

let daysOfTheWeek = {
  'Sunday': 1,
  'Monday': 2,
  'Tuesday': 3,
  'Wednesday': 4,
  'Thursday': 5,
  'Friday': 6,
  'Saturday': 7
}

let daysArray = Object.keys(daysOfTheWeek);

for (let i = 0; i < daysArray.length; i++) {
  console.log(daysArray[i]);
}

輸出:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

在 JavaScript 中使用 Object.entries() 列舉物件屬性

Object.entries() 返回一個陣列。該陣列的每個元素都是一個由物件屬性名稱和值組成的陣列。

但是,我們需要屬性名稱。因此,我們將遍歷結果陣列以獲取屬性名稱。

我們在下面的程式碼中對陣列使用 Object.keys()。之後,我們使用 for...of 迴圈來提取屬性名稱。

請注意,我們使用的是與上一節相同的陣列。

let daysOfTheWeek = {
  'Sunday': 1,
  'Monday': 2,
  'Tuesday': 3,
  'Wednesday': 4,
  'Thursday': 5,
  'Friday': 6,
  'Saturday': 7
}

let daysArray = Object.entries(daysOfTheWeek);

for (const [propName, propValue] of daysArray) {
  console.log(`${propName}`);
}

輸出:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday

在 JavaScript 中使用 Underscore.js 列舉物件屬性

Underscore.js 有一個 .keys() 方法以陣列形式返回物件屬性。但是,由於要列舉屬性,因此需要遍歷陣列。

你可以在迴圈期間一個接一個地列出屬性名稱。

在以下程式碼中,我們通過 CDN 使用 Underscore.js。當 Underscore.js 下載並可供我們的指令碼使用時,我們使用它的 .keys() 方法。

<body>
	<script
	src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.13.2/underscore-min.js"
	integrity="sha512-anTuWy6G+usqNI0z/BduDtGWMZLGieuJffU89wUU7zwY/JhmDzFrfIZFA3PY7CEX4qxmn3QXRoXysk6NBh5muQ==" crossorigin="anonymous"
	referrerpolicy="no-referrer"
	>
	</script>
	<script>
		let daysOfTheWeek = {
  			"Sunday": 			1,
  			"Monday": 			2,
  			"Tuesday": 			3,
  			"Wednesday": 		4,
  			"Thursday": 		5,
  			"Friday": 			6,
  			"Saturday":		7
  		}

  		let underscore = _;
  		let days = _.keys(daysOfTheWeek);

  		days.forEach((propKey, propValue) => {
  			console.log(propKey);
  		});
	</script>
</body>

輸出:

Sunday
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
作者: Habdul Hazeez
Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn

相關文章 - JavaScript Object