将数组对象键值对属性转换为单个键值对,然后将其再次插入数组

时间:2018-08-29 19:32:41

标签: javascript arrays object

我有一个js数组

var array = [ {no: 50, name: 'Ajinkya'}, {no: 89, name: 'Akshay'}, {no: 29, name: 'Rajesh'}, {no: 15, name: 'Vikram'}, ]

想要将其转换为数组

var array = [50:'Ajinkya', 89:'Akshay', 29:Rajesh, 15: 'Vikram']

我已经尝试过了

array.forEach(
 function(x){
 temp[x['no']] = x['name'];
})

但是它没有给出预期的结果

4 个答案:

答案 0 :(得分:1)

您可以将对象与所需的键/值对映射,并将它们分配给单个对象。

使用的方法:

var array = [{ no: 50, name: 'Ajinkya' }, { no: 89, name: 'Akshay' }, { no: 29, name: 'Rajesh' }, { no: 15, name: 'Vikram' }],
    object = Object.assign(...array.map(({ no, name }) => ({ [no]: name })));
    
console.log(object);

答案 1 :(得分:1)

如果您是说50:'Ajinkya'是第50个元素为'Ajinkya'的数组,则

[{ no: 50, name: 'Ajinkya' },
{ no: 89, name: 'Akshay' },
{ no: 29, name: 'Rajesh' },
{ no: 15, name: 'Vikram' }].reduce((acc, prev) => {
  acc[prev.no] = prev.name;
  return acc;
}, []);

答案 2 :(得分:1)

const array1 = [ {no: 50, name: 'Ajinkya'}, {no: 89, name: 'Akshay'}, {no: 29, name: 'Rajesh'}, {no: 15, name: 'Vikram'} ];

const array2 = {} ;

for (const itm of array1) {
      array2[itm.no] =itm.name;
} 

答案 3 :(得分:0)

我将数组简化为一个对象,您可以在其中通过id查找项目。数组在这里真的没有意义。

    const array = [ {no: 50, name: 'Ajinkya'}, {no: 89, name: 'Akshay'}, {no: 29, name: 'Rajesh'}, {no: 15, name: 'Vikram'}, ];
    
    const newStructure = array.reduce((acc, {no,name}) => {
        acc[no] = name;
        return acc;
    }, {});

    console.log(newStructure);