Javascript将数组映射到具有已定义键的新数组

时间:2017-03-21 15:55:52

标签: javascript ecmascript-6

我需要的是转换这个数组

[
   0: {id: 1},
   1: {id: 2}
]

[
   1: {id: 1},
   2: {id: 2}
]

只是切换按键,我想,我试图使用.map但我可以改变的是值而不是键

1 个答案:

答案 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处有一个未定义的值,对象版本没有它。使用对象版本更有意义,而不是数组。正如评论中所提到的,在阵列中存在间隙并不是一个好主意。