我需要的是转换这个数组
[
0: {id: 1},
1: {id: 2}
]
到
[
1: {id: 1},
2: {id: 2}
]
只是切换按键,我想,我试图使用.map但我可以改变的是值而不是键
答案 0 :(得分:2)
我认为您可以使用reduce
它以空数组开头,并且在每次迭代期间,在项目id字段的索引处添加1个项目。
这将为您提供一个长度可能不是您所期望的数组,因此我建议您更深入地了解您的要求。
var arr = [
{id: 1},
{id: 2}
];
var result = arr.reduce( (container, item) => {
container[item.id] = item;
return container;
}, [] );
console.log( result[1] );
console.log( result[2] );
console.log( result );
您总是可以使用正确的键将其设为对象,语法几乎相同
var arr = [
{id: 1},
{id: 2}
];
var result = arr.reduce( (container, item) => {
container[item.id] = item;
return container;
}, {} );
console.log( result[1] );
console.log( result[2] );
console.log( result );
值得注意的是,对于数组,在位置0处有一个未定义的值,对象版本没有它。使用对象版本更有意义,而不是数组。正如评论中所提到的,在阵列中存在间隙并不是一个好主意。