迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 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 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

在 Angular 中上传文件

发布时间:2023/04/14 浏览次数:71 分类:Angular

本教程演示了如何在 Angular 中上传任何文件。我们还将介绍如何在文件上传时显示进度条,并在上传完成时显示文件上传完成消息。

Angular 2 中的复选框双向数据绑定

发布时间:2023/04/14 浏览次数:139 分类:Angular

本教程演示了如何一键标记两个复选框。这篇有 Angular 的文章将着眼于执行复选框双向数据绑定的不同方法。

在 AngularJs 中加载 spinner

发布时间:2023/04/14 浏览次数:107 分类:Angular

我们将介绍如何在请求加载时添加加载 spinner,并在 AngularJs 中加载数据时停止加载器。

在 Angular 中显示和隐藏

发布时间:2023/04/14 浏览次数:78 分类:Angular

本教程演示了 Angular 中的显示和隐藏。在开发商业应用程序时,我们需要根据用户角色或条件隐藏一些数据。我们必须根据该应用程序中的条件显示相同的数据。

在 Angular 中下载文件

发布时间:2023/04/14 浏览次数:104 分类:Angular

本教程演示了如何在 angular 中下载文件。我们将介绍如何通过单击按钮在 Angular 中下载文件并显示一个示例。

扫一扫阅读全部技术教程

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

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便