2017-10-10 103 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數組作爲鍵,不需要反覆渲染鍵。 –