Object.entries
Object.entries() 返回给定对象的一组可枚举的字符串键控属性 [key, value] 对,其顺序与 for..of 循环提供的顺序相同,但有一个区别是 for...of 枚举原型链。
使用 Object.entries,我们可以将数组剪切为键和属性:
for (let [key, value] of Object.entries(p)) { console.log(`${key}: ${value}`); }
例子:
const personSalary = { engineer: 1500, programmer: 2500, lawyer: 2000, } for (let [key, value] of Object.entries(personSalary)) { console.log(`${key}: ${value}`); }
Object.keys
下面是使用 Object.keys 遍历数组的示例:
const personSalary = { engineer: 1500, programmer: 2500, lawyer: 2000, } const keys = Object.keys(personSalary) console.log(keys) //[engineer, programmer, lawyer]
这里的重点是使用 for...of 而不是 for...in。
否则,它将在命名属性上返回 undefined,并且 Object.keys() 确保仅使用对象的属性而不使用整个原型链属性。
for...in 和 for...of 循环
for...in 循环在对象的属性上迭代指定的变量。
它迭代对象的“可枚举”属性并应用于具有这些属性的所有对象。
可枚举属性是具有真正 Enumerable 值的对象的属性。
通过调用property.enumerable,可以查看一个属性是否是可枚举的。
它会返回真或者假。
for...of 语句用于创建一个循环,该循环允许迭代数组或者其他可迭代对象,例如数组、字符串、映射和集合等。
非常简单地。
此方法用于迭代具有 [Symbol.iterator] 属性的对象的“可迭代集合”。
有时,可能需要遍历 JavaScript 中的对象。
它主要是通过 for..in 循环完成的。
但是,循环遍历对象的所有键值对时,我们也在循环遍历它们。
for..in 循环遍历原型链中的属性。
要解决这个问题,我们应该检查该属性是否属于该对象。
它是通过 hasOwnProperty 完成的。
for (let prop in object) { if (object.hasOwnProperty(prop)) { //Do thing here } }
还有另一种方法,首先需要将对象转换为数组并循环遍历数组。
因此,还有其他方法循环遍历数组。
日期:2020-06-02 22:16:22 来源:oir作者:oir