迭代对象值

时间:2017-01-12 21:02:26

标签: javascript javascript-objects

我正在使用OOP并查看如何迭代对象值,例如,这段代码:

var numbers = {
    one: "number one",
    two: "number two",
    three: "number three",
    four: "number four"
};

并迭代其值,我得到了这个:

for(var index in numbers){
    var x = index;
    console.log(numbers[x]);    
}

虽然看起来更深入并且正在研究,我在mozillla.org上看到我也可以迭代这样的对象值:

console.log(Object.values(numbers));

我的问题是,一个人对另一个人有什么好处吗?在日常编程中,人们会使用一个吗?

1 个答案:

答案 0 :(得分:0)

for...in循环遍历对象可枚举属性,包括继承属性。此外,它还是ES5,并且受到当前所有浏览器的支持。



var obj1 = { a: 1, b: 2 };
var obj2 = Object.create(obj1);
obj2.c = 3;

for (var key in obj2) {
  console.log(obj2[key]);
}




Object#values创建一个对象拥有的属性数组(不是继承的属性),并且不会迭代它们。此外,由于它是ECMAScript 2017草案,IE和旧浏览器缺乏支持。



var obj1 = { a: 1, b: 2 };
var obj2 = Object.create(obj1);
obj2.c = 3;

console.log(Object.values(obj2));




如果要迭代对象自己的属性并支持旧浏览器,可以将Object#keys与数组迭代方法一起使用,例如Array#forEach



var obj1 = { a: 1, b: 2 };
var obj2 = Object.create(obj1);
obj2.c = 3;

var result = Object.keys(obj2).forEach(function(key) {
  console.log(obj2[key]);
});