更改数组中对象参数的名称

时间:2018-01-09 13:21:50

标签: javascript arrays object ecmascript-6

假设我有以下数组结构:

strings.Split(reqToken, "Bearer ")

我想将参数名称更改为以下内容:

"stores" : [
    {
        id: 1,
        name: 'lopd',
    },
    {
        id: 2,
        name: 'abc'
    }
]

我将如何在ES6中执行此操作?

4 个答案:

答案 0 :(得分:4)

您可以使用map功能执行以下操作:

let example = {
  "stores" : [
   {
    id: 1,
    name: 'lopd',
   },
   {
    id: 2,
    name: 'abc'
   }
  ]
}

let answer = example.stores.map(item => {
   return {
     value: item.id,
     label: item.name
  }
})

console.log(answer)

答案 1 :(得分:4)

您可以将destructuring assignmentobject property assignment patternshort hand properties一起使用。



var stores = [{ id: 1, name: 'lopd' }, { id: 2, name: 'abc' }];

stores = stores.map(({ id: value, name: label }) => ({ value, label }));

console.log(stores);




答案 2 :(得分:1)

仅仅为了完整起见,虽然我实际上会使用Nina's answer:如果你想真正修改原始对象,你可以创建新的属性,delete你想要丢弃的属性。 / p>



var obj = {
  stores: [{
      id: 1,
      name: 'lopd',
    },
    {
      id: 2,
      name: 'abc'
    }
  ]
}
console.log(obj.stores);
obj.stores.forEach(function(val) {
  val.value = val.id;
  val.label = val.name;
  delete val.id;
  delete val.name;
});
console.log(obj.stores);




它可能并不重要(或者在大多数情况下),但这是保留原始对象的唯一方法。其他解决方案用新的替换阵列中的整个对象......

另外:这是ES5所以它可以在旧版浏览器中使用(即IE9)

答案 3 :(得分:0)

您也可以使用以下方法创建新数组:

示例:



var data = [{id: 1, name: 'lopd'}, {id: 2, name: 'abc'}];
    
var result = Array.from(data, obj => ({value: obj.id, label: obj.name}));

console.log(result);