js 遍历对象的三种方法

Lasted 2020-11-20 11:44:38

第一种:使用 for...in 语句遍历对象

下面的函数接受一个对象作为参数。被调用时迭代传入对象的所有可枚举属性然后返回一个所有属性名和其对应值的字符串。

const obj = {a:1, b:2, c:3};
for (const prop in obj) {
  console.log("obj." + prop + " = " + obj[prop]);
}
"obj.a = 1"
"obj.b = 2"
"obj.c = 3"

第二种:使用 Object.keys() 语句获取属性数组

Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和正常循环遍历该对象时返回的顺序一致 。

Object.values()方法返回一个给定对象自身的所有可枚举属性值的数组,值的顺序与使用for...in循环的顺序相同 ( 区别在于 for-in 循环枚举原型链中的属性 )。

const obj = {
  a: 'somestring',
  b: 42,
  c: false
};
console.log(Object.keys(obj));
console.log(Object.values(obj));

第二种:使用 Object.getOwnPropertyNames() 获取属性数组

Object.getOwnPropertyNames()方法返回一个由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)组成的数组。

// 类数组对象
const obj = { 0: "a", 1: "b", 2: "c"};
console.log(Object.getOwnPropertyNames(obj).sort());

// 使用Array.forEach输出属性名和属性值
Object.getOwnPropertyNames(obj).forEach(function(val, idx, array) {
  console.log(val + " -> " + obj[val]);
});
["0", "1", "2"]
          
0 -> a
1 -> b
2 -> c