2017-10-10 108 views
1

对不起,如果这是一个愚蠢的问题,但我对此很陌生。我有几个对象(object1,对象2,object3 ...),每个具有相同的属性(property1,property2,property3 ...)这样的:Javascript:通过几个对象的相同属性循环

var object1 = {color: red, length: 1, width: 6}; 
var object2 = {color: blue, length: 4, width: 2}; 
var object3 = {color: green, length: 4, width: 5}; 

我怎样才能让一个for循环,通过运行每个对象的相同属性,而不是一个对象的每个属性?

谢谢!

+1

巢循环。把它想象成一个二维数组。或者根据需要使用map/reduce/filer抽象。 – rjustin

+1

您需要这些对象的数组或对这些对象的某种引用才能通过 –

+0

检查['Object.values()'](https://developer.mozilla.org/en-US/docs/Web/ JavaScript/Reference/Global_Objects/Object/values)和['Object.keys()'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/keys) –

回答

4

您可以首先迭代属性并比数组中的对象迭代。

var object1 = { color: 'red', length: 1, width: 6 }, 
 
    object2 = { color: 'blue', length: 4, width: 2 }, 
 
    object3 = { color: 'green', length: 4, width: 5 }; 
 

 
['color', 'length', 'width'].forEach(function (k) { 
 
    [object1, object2, object3].forEach(function (o) { 
 
     console.log(o[k]); 
 
    }); 
 
});
.as-console-wrapper { max-height: 100% !important; top: 0; }

+0

请注意,如果您知道所有对象具有相同的属性,则可以使用Object.keys替换硬编码的属性object1)' – juvian

+0

@juvian,但是,然后,你可以拿一个const数组作为键,不需要反复渲染键。 –