【问题标题】:Adding array of objects into single array将对象数组添加到单个数组中
【发布时间】:2019-01-25 03:45:51
【问题描述】:

我正在尝试将对象数组从现有对象推送到新数组。但只有最后一个值被推送

例如:我没有得到1 2 3 作为输出,而是得到3 3 3

var arr=[{'id':'1','name':'xyz'},{'id':'2','name':'pqr'},{'id':'3','name':'mon'}];
var toSend=[];
var obj={'id':""};
for(var i=0;i<arr.length;i++) {
    obj.id = arr[i].id;
  toSend.push(obj);
}

Fiddle link

【问题讨论】:

    标签: javascript html arrays angularjs object


    【解决方案1】:

    您将相同的对象引用推送到数组。通过使用新的对象,所有的对象都是不同的。

    var arr = [{ id: '1', name: 'xyz' }, { id: '2', name: 'pqr' }, { id:'3', name: 'mon' }],
        toSend = [],
        obj;
    
    for (var i = 0; i < arr.length; i++) {
        obj = { id: arr[i].id };
        toSend.push(obj);
    }
    
    console.log(toSend);

    【讨论】:

      【解决方案2】:

      您的代码几乎是正确的,它需要更正,正如@Nina 在她的回答中已经提到的那样。

      但如果您想要更好的方法来做到这一点,Array#map 就是您所需要的。以下是它提供的好处:

      1. 它隐式循环数组。所以你不需要编写自己的for 循环。
      2. 它隐式返回一个新对象。因此,您无需在循环中声明和使用新对象。
      3. 它为您想要完成的任务提供了更实用的方法。

      var arr = [{
        'id': '1',
        'name': 'xyz'
      }, {
        'id': '2',
        'name': 'pqr'
      }, {
        'id': '3',
        'name': 'mon'
      }];
      
      var toSend = arr.map(item => item.id);
      console.log(toSend);

      【讨论】:

        【解决方案3】:

        您还可以将Array.map() 与数组解构一起使用:

        var arr=[{'id':'1','name':'xyz'},{'id':'2','name':'pqr'},{'id':'3','name':'mon'}];
        var toSend = arr.map(({id}) => ({id}));
        console.log(toSend);

        【讨论】:

          【解决方案4】:

          var 变量 obj 需要在 for 循环中声明

          同时停止使用 var 并开始使用 let。 ES 的建议是使用 let 而不是使用 var。因为 var 具有窗口范围,而 let 具有块级范围

          for(let i=0;i<arr.length;i++) {
               let obj= {};
               obj.id = arr[i].id;
               toSend.push(obj);
          }
          

          或者你也可以使用地图

           arr.map((data, i) => {
               let obj= {};
               obj.id = data.id;
               toSend.push(obj);
          }
          

          抱歉,如果有语法错误,因为我是通过手机回答的:)

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2013-01-24
            • 1970-01-01
            • 2016-02-06
            • 2022-01-13
            • 2018-09-06
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多