繁体   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