如何将数组键设置为javascript/node js中的索引

我有一个像这样的对象数组:


var kvArray = [ 

   { 

       number: '123',

       duration: '00:00:00' 

   },

   { 

      number: '324',

      duration: '00:00:00' 

   }]

我想从上面的数组生成一个新数组,以便number键成为索引。


这是我试过的


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 作为索引:

http://img4.mukewang.com/60d4526f00012f6b02150126.jpg

相反,我希望输出数组是这样的:

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

这样,而不是 0 , 1 作为索引我有 123 和 324 作为索引。因此,如果在我的代码中写入 test_array[123] ,我应该能够在输出中获得 00:00:00 。是否有可能实现我在这里尝试做的事情?建议如何做到这一点的更好方法

我该怎么做呢?


子衿沉夜
浏览 133回答 3
3回答

慕哥6287543

您可以使用array#mapwithObject.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);

梦里花落0921

如果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);

炎炎设计

reformattedArray =[]tempHash = kvArray.reduce(function(i,j){    return $.extend(i,j)})for(i in tempHash) {    reformattedArray[i] = tempHash[i]}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript