如何重命名数组中对象的键

9
如何用另一值替换数组元素的值
我有一个数组,如下所示,不使用jQuery。
 this.products = [
      { 
        text: 'prod1', 
        value: 1 
      },
      { 
        text: 'prod2', 
        value: 2 
      },
      { 
        text: 'prod3', 
        value: 3 
      }
 ];

我想把“text”替换为“label”。

3
products.map(prod => { return { label: prod.text, value: prod.value }; }) - haim770
3
可能是JavaScript: Object Rename Key的重复问题。 - Rudresha Parameshappa
2
尝试这个代码:var result = products.map(({text, value}) => ({label: text, value})); - Hassan Imam
2
感谢 @HassanImam,工作完美。 - Srinu
4个回答

12
这个怎么样?

var products = [{
    text: 'prod1',
    value: 1
  },
  {
    text: 'prod2',
    value: 2
  }, {
    text: 'prod3',
    value: 3
  }
];

products.forEach(function(obj) {
  obj.label = obj.text;
  delete obj.text;
});
console.log(products);


12

使用 ES6:

const updatedProducts = products.map(({text: label, value})=>({value, label}));

3
There are many ways using map in ES6

<div data-lang="js" data-hide="false" data-console="true" data-babel="false" class="snippet">
<div class="snippet-code">
<pre class="snippet-code-js lang-js prettyprint-override"><code>    var products = [
          { 
            text: 'prod1', 
            value: 1 
          },
          { 
            text: 'prod2', 
            value: 2 
          },
          { 
            text: 'prod3', 
            value: 3 
          }
     ];

    const newProducts = products.map(({text: label, value})=>({value, label}));
    console.log(newProducts );

    console.log("===================Another  Method====================")


    products.map((el)=>{
    el.label = el.text
    delete el.text
    })

    console.log(products);

0
对于像我这样的人,他们正在寻找一个不会改变原始对象(这将导致React中的错误),而是想要返回一个新数组,其中每个对象都有一个特定键重命名为新对象的函数,我已经创建了以下函数。
export const renameKey = (arr, oldKey, newKey) => {
  let newArray = [];

  arr.forEach((obj) => {
    let newObj = {};
    const keys = Object.keys(obj);
    keys.forEach((key) => {
      if (key === oldKey) {
        Object.assign(newObj,{ [newKey]: obj[oldKey] });
      } else {
        Object.assign(newObj,{ [key]: obj[key] });
      }
    });
    newArray.push(newObj);
  });

  return newArray;
};

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接