ES6对象分配部分项目

时间:2016-02-23 16:39:40

标签: javascript arrays object ecmascript-6 assign

我有一个js对象列表,如:

actualVal = [{pId: a1, pVal: b1}, {pId: a2, pVal: b2}, ....]

我已将其传递给我的函数,并且我使用ES6将其作为参考:

let { myVal } = actualVal;

这给了我类似的东西:

myVal = [{pId: a1, pVal: b1}, {pId: a2, pVal: b2}, ....]

ES6中是否有办法将其作为:

myVal = [{id: a1, val: b1}, {id: a2, val: b2}, ....]

我可以遍历数组来执行此操作,但是有没有办法在不迭代的情况下映射它?谢谢!

更新:感谢大家的答案。那么哪一个是最有效的方法呢?

3 个答案:

答案 0 :(得分:2)

没有,但是lodash的mapKeys功能可以帮助你做到这一点。另外,let { myVal } = actualVal不会创建您的数组的副本,如果这是您正在考虑的内容,那么您无论如何都需要以另一种方式处理。

actualVal = [{pId: a1, pVal: b1}, {pId: a2, pVal: b2}, ....]
let newArr = actualVal.map((e, i) => {
  return _.mapKeys(e, function (val, key) {
    if (key === 'pId')
      return 'id'
    else if 
      // ...
  }

答案 1 :(得分:0)

您可以使用map来迭代您的数组

myVal.map( val => {return {id: val.pId, val: val.pVal}})

答案 2 :(得分:0)

仅使用数组映射:

myVal = actualVal.map(function(obj) {
    return {
        id: obj.pId,
        val: obj.pVal
    };
});