Преобразовать свойства пары ключ-значение в массиве объектов в одну пару ключ-значение и снова вставить ее в массив - PullRequest
0 голосов
/ 29 августа 2018

У меня есть массив 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 голосов
/ 29 августа 2018

Я бы уменьшил массив в объект, где вы можете искать элементы по идентификатору. Массив здесь не имеет смысла.

    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);
0 голосов
/ 29 августа 2018

Если вы имеете в виду, что 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;
}, []);
0 голосов
/ 29 августа 2018
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;
} 
0 голосов
/ 29 августа 2018

Вы можете сопоставить объекты с требуемыми парами ключ / значение и назначить их одному объекту.

Используемые методы:

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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...