2016-01-24 48 views
1

我有一個對象數組和字符串數組,我打算將兩個按順序組合起來,這意味着我想將數組中的第一項存儲在第一個對象中,第二個項目數組只在第二個對象中,例如。像下面這樣。將字符串推入對象

var objects = [ obj1, obj2, obj3]; 

var strings = ["123", "456", "789"]; 


//Result 
var results = [ 
    { 
     "obj1": { 
      number: "123" 
     }, 
    { 
     "obj2": { 
      number: "456" 
     }, 
    { 
     "obj2": { 
      number: "789" 
     } 
    ]; 

我一直在嘗試用push和for循環做這件事,但我似乎最終得到每個包含所有三個字符串的對象。

回答

2

它容易: -

for (var i = 0; i < objects.length; i++) {// start loop for getting values one by one from object array 
    objects[i].number = strings[i]; // assign string values to object array values 
} 
+0

你和@製造商的答案有什麼區別? –

2

匹配的對象和字符串共享相同的數組索引:

for (var i = 0; i < objects.length; i++) { 
    objects[i].number = strings[i]; 
} 
2

或者你可以做到這一點使用地圖功能:

var results = objects.map(function (value, index) { 
    return Object.assign({}, value, { number: strings[index] }); 
}); 

的其他答案是好的,我只是想給你另一種方式。這樣,你也不會修改現有的對象數組

如果你不知道Object.assign添加到第一個參數(在我們的例子中是空對象{})所有其他對象參數的屬性。你可以在這裏閱讀更多關於它的信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign 此外,你可以在這裏瞭解地圖功能:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map