簡體   English   中英

JavaScript Object。 更改數組中對象的鍵名

[英]JavaScript Object. Change key name of objects in array

我有一個像這個例子一樣的對象數組:

[
  { id: 44, message: 'abcd', name: 'example1' },
  { id: 44, message: 'efgh', name: 'example2' },
  { id: 45, message: 'ijkl', name: 'example3' },
  { id: 45, message: 'mnop', name: 'example4' },
]

如您所見, id 值是重復的。 現在我只需要在第二次重復 object 時將“name”的鍵名更改為“lastName”:

[
  { id: 44, message: 'abcd', name: 'example1' },
  { id: 44, message: 'efgh', lastName: 'example2' },
  { id: 45, message: 'ijkl', name: 'example3' },
  { id: 45, message: 'mnop', lastName: 'example4' },
]

您可以保留last id跟蹤,並在map loopmodify返回 object

對於未排序的列表:

 let data = [ { id: 44, message: "abcd", name: "example1" }, { id: 44, message: "efgh", name: "example2" }, { id: 45, message: "ijkl", name: "example3" }, { id: 45, message: "mnop", name: "example4" }, ]; let idMap = new Set(); const result = data.map((item) => { if (idMap.has(item.id)) { const { name: lastName, ...rest } = item; item = {...rest, lastName }; } else { idMap.add(item.id); } return item; }); console.log(result);

注意:數據必須根據 id 進行排序。

 let data = [ { id: 44, message: "abcd", name: "example1" }, { id: 44, message: "efgh", name: "example2" }, { id: 45, message: "ijkl", name: "example3" }, { id: 45, message: "mnop", name: "example4" }, ]; let lastId = ""; const result = data.map((item) => { if (lastId === item.id) { const { name: lastName, ...rest } = item; item = {...rest, lastName }; lastId = ""; } else { lastId = item.id; } return item; }); console.log(result);

如果具有此 id 的項目已被訪問,您可以保存每個項目的id並將鍵從name重命名為lastName

 let list = [ { id: 44, message: 'abcd', name: 'example1' }, { id: 44, message: 'efgh', name: 'example2' }, { id: 45, message: 'ijkl', name: 'example3' }, { id: 45, message: 'mnop', name: 'example4' }, ]; let checked = []; list.forEach(function (item) { if(checked.includes(item.id)){ item['lastName'] = item['name']; delete item['name']; }else{ checked.push(item.id); } }); console.log(list)

暫無
暫無

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

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