Как установить ключ массива в качестве индекса в javascript / node js - PullRequest
1 голос
/ 10 июня 2019

У меня есть массив таких объектов:

var kvArray = [ 
   { 
       number: '123',
       duration: '00:00:00' 
   },
   { 
      number: '324',
      duration: '00:00:00' 
   }]

Я хочу сгенерировать новый массив из вышеуказанного массива, чтобы ключ number стал индексом.

Thisэто то, что я пытался

var kvArray = [
   { 
       number: '123',
       duration: '00:00:00' 
   },
   { 
       number: '324',
       duration: '00:00:00' 
   }]

var reformattedArray = kvArray.map(obj =>{ 
   var rObj = {};
   rObj[obj.number] = obj.duration;
   return rObj;
});
console.log(reformattedArray)

Приведенный выше вывод выглядит в консоли следующим образом: 0 и 1 как индекс: enter image description here

Вместо этого я хочувыходной массив должен быть таким:

123: {"00:00:00"}
324: {"00:00:00"}

таким, что вместо 0, 1 в качестве индекса у меня 123 и 324 в качестве индекса.Так что, если написать test_array [123] в моем коде, я смогу получить 00:00:00 в выводе.Можно ли добиться того, что я пытаюсь сделать здесь?Предложите лучшие способы, как это можно сделать

Как мне это сделать?

Ответы [ 3 ]

4 голосов
/ 10 июня 2019

Вы можете использовать array#map с Object.assign() для создания желаемого результата.

const data = [ { number: '123', duration: '00:00:00' }, { number: '324', duration: '00:00:00' } ],
      result = Object.assign(...data.map(({number, duration}) => ({[number]: duration})));
      
console.log(result);
2 голосов
/ 10 июня 2019

Если значения number будут уникальными в вашем массиве, вы можете использовать .reduce() для создания объекта карты, как показано ниже:

const data = [
  { number: '123', duration: '00:00:00' },
  { number: '324', duration: '00:00:00' }
];      
    
const map = data.reduce((r, { number:k, duration:v }) => (r[k] = v, r), {});

console.log(map);
0 голосов
/ 10 июня 2019
reformattedArray =[]
tempHash = kvArray.reduce(function(i,j){
    return $.extend(i,j)
})
for(i in tempHash) {
    reformattedArray[i] = tempHash[i]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...