在 JavaScript 中枚举对象属性

本教程将教您使用不同的方法来枚举 JavaScript 对象的属性。这些方法将使用内置的 JavaScript 功能,如for...inobject keys和 object.entries

目录

1.用于for. ..in枚举JavaScript 中的对象属性

2.用于object.keys枚举JavaScript 中的对象属性

3.用于object.entries()枚举JavaScript中的对象属性

4.用于underscore.js枚举JavaScript 中的对象属性


1.用于for. ..in枚举JavaScript 中的对象属性

您可以使用 枚举 JavaScript 对象属性for...in。但是,如果 JavaScript 符号是属性名称,它们将被忽略。

此外,for...in返回继承的可枚举属性;hasOwnProperty()您可以使用该方法避免这种情况。这些hasOwnProperty()方法确保返回的属性属于当前对象。

在下面的示例代码中,我们有一个具有一些属性和值的对象。此外,属性名称之一是 JavaScript 符号。

当您使用 枚举对象时,结果将不包括 JavaScript 符号for...in

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

2.用于object.keys枚举JavaScript 中的对象属性

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

3.用于object.entries()枚举JavaScript中的对象属性

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

4.用于underscore.js枚举JavaScript 中的对象属性

Underscore.js具有.keys()将对象属性作为数组返回的方法。但是,由于要枚举属性,因此需要遍历数组。

您可以在循环期间一个接一个地列出属性名称。

在以下代码中,我们Underscore.js通过 CDN 使用。当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
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值