如何在JavaScript中更改数组对象的键?

时间:2018-08-17 11:10:31

标签: javascript arrays

var originalArray = [
      {Name: "IPHONE8s", Id: 4}, 
      {Name: "Iphone 9", Id: 5}, 
      {Name: "IPHONEX", Id: 6}
];

如何将其更改为这样的

var changeArray = [
      {text: "IPHONE8s", value: 4 },
      {text: "Iphone 9", value: 5 },
      {text: "IPHONEX", value: 6 }
]

非常感谢您。

5 个答案:

答案 0 :(得分:3)

  

使用 Array.map()

var originalArray = [
      {Name: "IPHONE8s", Id: 4}, 
      {Name: "Iphone 9", Id: 5}, 
      {Name: "IPHONEX", Id: 6}
];

var changeArray = originalArray.map(data => ({text: data.Name, value: data.Id}))

console.log(changeArray);

答案 1 :(得分:1)

您可以将.map()用于对象分解:

let data = [
  {Name: "IPHONE8s", Id: 4},
  {Name: "Iphone 9", Id: 5},
  {Name: "IPHONEX", Id: 6}
];

let result = data.map(({Name:text, Id:value}) => ({text, value}));

console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

参考:

答案 2 :(得分:0)

示例代码

function renameKeys(obj, newKeys) {
  const keyValues = Object.keys(obj).map(key => {
    const newKey = newKeys[key] || key;
    return { [newKey]: obj[key] };
  });
  return Object.assign({}, ...keyValues);
}

并像这样使用它:

const obj = { a: "1", b: "2" };
const newKeys = { a: "A", c: "C" };
const renamedObj = renameKeys(obj, newKeys);
console.log(renamedObj)

答案 3 :(得分:0)

您可以通过将键值对与新名称映射来映射对象,方法是使用一个对象作为键及其替换用的新名称。

此提案保留其他属性。

var array = [{ Name: "IPHONE8s", Id: 4, foo: 'bar' }, { Name: "Iphone 9", Id: 5 }, { Name: "IPHONEX", Id: 6 }],
    replace = { Name: 'text', Id: 'value' },
    result = array.map(o => Object.assign(...Object
        .entries(o)
        .map(([k, v]) => ({ [replace[k] || k]: v }))
    ));
    
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 4 :(得分:0)

var originalArray = [{Name: "IPHONE8s", Id: 4}, {Name: "Iphone 9", Id: 5}, {Name: 
"IPHONEX", Id: 6} ];
let changeArray = []
for (let i = 0; i < originalArray.length; i++) {
  let tmpObj = {}
  tmpObj.text = originalArray[i].Name
  tmpObj.value = '' + originalArray[i].Id
  changeArray.push(tmpObj) 
}
console.log(changeArray)