将字符串推入对象

pushing strings into an object

我有一个对象数组和一个字符串数组,我想按顺序将两者结合起来,这意味着我想将数组中的第一项仅存储在数组的第一个对象和第二项中仅在第二个对象中,等等。类似于以下内容。

var objects = [ obj1, obj2, obj3];

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


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

我一直在尝试通过推送和 for 循环来做到这一点,但我似乎最终得到了包含所有三个字符串的每个对象。

匹配的对象和字符串共享相同的数组索引:

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

很简单:-

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
}

或者您可以使用 map 函数执行此操作:

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