【问题标题】:replace an array object with an additional element用附加元素替换数组对象
【发布时间】:2018-08-09 04:07:10
【问题描述】:

我有一个包含 iddes 元素的数组。我想在array 中添加额外的元素,如value:0。所以我用循环尝试了它并完成了它。

let data = [
    {
        "id": 1001,
        "des": "aaa"
    },
    {
        "id": 1002,
        "des": "aaa"
    }
];

for (let i = 0; i < data.length; i++) {
    let tempObj = {
        "id": data[i].id, "des": data[i].des, "value": 0
    }
    data[i] = tempObj;
}

没有循环可以吗?在 javascript 中是否有可用的 JavaScript 函数?

【问题讨论】:

  • 无循环 ?你能详细说明一下吗?
  • 你总是需要value: 0 吗?如果你需要索引,你可以做类似data.map((x,index) =&gt; Object.assign({}, x, {value:index}))

标签: javascript arrays angular typescript ecmascript-6


【解决方案1】:

没有循环是不行的,但是你可以使用Array#map方法和Object.assign方法来简化代码(或者使用spread syntax in ES6)。

let data = [{
    "id": 1001,
    "des": "aaa"

  },  {
    "id": 1002,
    "des": "aaa"
  }
];

var res = data.map(o => Object.assign({
  value: 0
}, o));


console.log(res);

// or alternatively you can use spread syntax
var res1 = data.map(o => ({ ...o, value: 1 }));


console.log(res1);

【讨论】:

    【解决方案2】:

    您可以使用map(循环并转换数组的每个元素)和扩展运算符(... - 允许您轻松地将对象的所有属性复制到新对象):

    data.map(x => ({ ...x, value: 0 }));
    

    【讨论】:

      【解决方案3】:

      您可以使用.map(),但它无论如何都会循环遍历内部的所有元素,尽管它看起来不像一个。

      我正在使用Object.assign() 创建新对象。

      let data = [{
          "id": 1001,
          "des": "aaa"
        },
        {
          "id": 1002,
          "des": "aaa"
        }
      ];
      
      let newData = data.map(el => Object.assign( el, {value: 0} ));
      console.log(newData);

      【讨论】:

        【解决方案4】:

        您可以在数组上使用map 并使用spread operator syntax

        let data = [{
                      "id": 1001,
                      "des": "aaa"
        
                    },
        
                    {
                        "id": 1002,
                        "des": "aaa"
        
                    }
                ];
            
        data = data.map(obj => ({...obj, value: 0}))
        console.log(data)

        【讨论】:

          猜你喜欢
          • 2016-07-20
          • 2017-08-05
          • 1970-01-01
          • 2016-06-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-04-28
          相关资源
          最近更新 更多