基于给定键的对象数组

Dav*_*d R 1 javascript json

我有一个声明的数组使用Object.assign:

var obj = [{
  id: 1,
  value: 'abc'
}, {
  id: 2,
  value: 'xyz'
}];

console.log(Object.assign({}, obj));
Run Code Online (Sandbox Code Playgroud)

它正在变换为,

{ 
    '0': { id: 1, value: 'abc' }, 
    '1': { id: 2, value: 'xyz' } 
}
Run Code Online (Sandbox Code Playgroud)

不过,我需要有这样的作为,(这里12代表id我的对象的属性)

{
        '1': {id: 1, value: 'abc'},
        '2': {id: 2, value: 'xyz'}
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一些,但没有运气,有人可以解决一些问题吗?

Nin*_*olz 6

您可以使用所需的键映射对象中的对象,并将其分配给单个对象.

var objects = [{ id: 1, value: 'abc' }, { id: 2, value: 'xyz' }],
    result = Object.assign(...objects.map(o => ({ [o.id]: o })));
    
console.log(result);
Run Code Online (Sandbox Code Playgroud)