迹忆客 专注技术分享

当前位置:主页 > 学无止境 > WEB前端 > JavaScript >

在 JavaScript 中枚举对象属性

作者:迹忆客 最近更新:2023/03/10 浏览次数:

本教程将教你使用不同的方法来枚举 JavaScript 对象的属性。这些方法将使用内置的 JavaScript 功能,如 for...inObject.keysObject.entries

你可以使用 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

你可以通过将对象作为参数传递给 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

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

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

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

Do you understand JavaScript closures?

发布时间:2025/02/21 浏览次数:108 分类:JavaScript

The function of a closure can be inferred from its name, suggesting that it is related to the concept of scope. A closure itself is a core concept in JavaScript, and being a core concept, it is naturally also a difficult one.

Do you know about the hidden traps in variables in JavaScript?

发布时间:2025/02/21 浏览次数:178 分类:JavaScript

Whether you're just starting to learn JavaScript or have been using it for a long time, I believe you'll encounter some traps related to JavaScript variable scope. The goal is to identify these traps before you fall into them, in order to av

How much do you know about the Prototype Chain?

发布时间:2025/02/21 浏览次数:150 分类:JavaScript

The prototype chain can be considered one of the core features of JavaScript, and certainly one of its more challenging aspects. If you've learned other object-oriented programming languages, you may find it somewhat confusing when you start

用 jQuery 检查复选框是否被选中

发布时间:2024/03/24 浏览次数:102 分类:JavaScript

在本教程中学习 jQuery 检查复选框是否被选中的所有很酷的方法。我们展示了使用直接 DOM 操作、提取 JavaScript 属性的 jQuery 方法以及使用 jQuery 选择器的不同方法。你还将找到许多有用的

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便