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 对象

有时,可能需要遍历 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