我有一个对象数组和一个字符串数组,我想要将两个顺序组合在一起意味着我希望数组上的第一个项目只存储在第一个对象中,而第二个项目仅存储在数组中第二个对象,等等。如下所示。
var objects = [ obj1, obj2, obj3];
var strings = ["123", "456", "789"];
//Result
var results = [
{
"obj1": {
number: "123"
},
{
"obj2": {
number: "456"
},
{
"obj2": {
number: "789"
}
];
我一直试图用push和for循环来做这个,但我似乎最终得到了包含所有三个字符串的每个对象。
答案 0 :(得分:2)
匹配的对象和字符串共享相同的数组索引:
for (var i = 0; i < objects.length; i++) {
objects[i].number = strings[i];
}
答案 1 :(得分: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
}
答案 2 :(得分: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