在 JavaScript 中枚举对象属性
本教程将教你使用不同的方法来枚举 JavaScript 对象的属性。这些方法将使用内置的 JavaScript 功能,如 for...in
、Object.keys
和 Object.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
相关文章
在 Angular 中上传文件
发布时间:2023/04/14 浏览次数:71 分类:Angular
-
本教程演示了如何在 Angular 中上传任何文件。我们还将介绍如何在文件上传时显示进度条,并在上传完成时显示文件上传完成消息。
Angular 中所有 Mat 图标的列表
发布时间:2023/04/14 浏览次数:91 分类:Angular
-
本教程演示了在哪里可以找到 Angular 中所有 Mat 图标的列表以及如何使用它们。
Angular 2 中的复选框双向数据绑定
发布时间:2023/04/14 浏览次数:139 分类:Angular
-
本教程演示了如何一键标记两个复选框。这篇有 Angular 的文章将着眼于执行复选框双向数据绑定的不同方法。
在 AngularJS 中重新加载页面
发布时间:2023/04/14 浏览次数:142 分类:Angular
-
我们可以借助 windows.location.reload 和 reload 方法在 AngularJS 中重新加载页面。
在 AngularJs 中设置 Select From Typescript 的默认选项值
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程提供了在 AngularJs 中从 TypeScript 中设置 HTML 标记选择的默认选项的解释性解决方案。
在 AngularJS 中启用 HTML5 模式
发布时间:2023/04/14 浏览次数:150 分类:Angular
-
本文讨论如何在 AngularJS 应用程序上启用带有深度链接的 HTML5 模式。
在 AngularJs 中加载 spinner
发布时间:2023/04/14 浏览次数:107 分类:Angular
-
我们将介绍如何在请求加载时添加加载 spinner,并在 AngularJs 中加载数据时停止加载器。
在 Angular 中显示和隐藏
发布时间:2023/04/14 浏览次数:78 分类:Angular
-
本教程演示了 Angular 中的显示和隐藏。在开发商业应用程序时,我们需要根据用户角色或条件隐藏一些数据。我们必须根据该应用程序中的条件显示相同的数据。
在 Angular 中下载文件
发布时间:2023/04/14 浏览次数:104 分类:Angular
-
本教程演示了如何在 angular 中下载文件。我们将介绍如何通过单击按钮在 Angular 中下载文件并显示一个示例。