簡體   English   中英

如何在JavaScript中更改數組對象的鍵?

[英]How to change key for array's objects' in javascript?

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 }
]

非常感謝你。

使用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); 

您可以將.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; } 

參考文獻:

范例程式碼

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)

您可以通過將鍵值對與新名稱映射來映射對象,方法是使用一個對象作為鍵及其新名稱以進行替換。

該建議保留其他屬性。

 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; } 

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM