2016-01-24 50 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