簡體   English   中英

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

[英]How to change indexes keys an array of object in JavaScript

我有一個對象數組[{name:'abc'},{name:'def'},{name:'ghi'}] 當我在這個數組上循環map() ,我得到的數組類似於[0:{name:'abc'},1:{name:'def'},2:{name:'ghi'}] 我想將索引號更改為字符串值,例如['string1':{name:'abc'},'string2':{name:'def'},'string3:{name:'ghi'}] 實際上它會將 (0, 1,2) 索引更改為 string 。 我試過了,但沒有找到任何解決方案。 有人可以幫助我如何解決這個問題。 ?

任何簡單的例子將不勝感激

謝謝

您需要一個允許按給定鍵進行索引的數據結構,您應該嘗試使用objectMap 如果您只是想做一些簡單的事情,請使用object

有了這個,你應該有:

const names = {
  string1: {name:'abc'},
  string2: {name:'def'},
  string3: {name:'ghi'}
}

但我想它可以簡化為:

const names = {
  string1: 'abc',
  string2: 'def',
  string3: 'ghi'
}

但是如果你想走很長的路,這可以給你類似的東西。

const names = [{name:'abc'},{name:'def'},{name:'ghi'}];
const entries = Object.fromEntries(names.entries());
const mappedNames = Object.keys(entries).map(key => [`string${key}`, entries[key]])

const newNames = Object.fromEntries(mappedNames)

這會給你:

{
  string0: {name:'abc'},
  string1: {name:'def'},
  string2: {name:'ghi'}
}

但是您不能更改數組索引的值。

您描述的語法['string1':{name:'abc'},'string2':{name:'def'},'string3:{name:'ghi'}]無效。 相反,結合for-of循環和object literals

let obj = {};
let ind = 0;
for (const object of /*array name*/) {
  obj["string" + ind] = object;
  ind += 1;

暫無
暫無

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

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