簡體   English   中英

如何在javascript / node js中將數組鍵設置為索引

[英]How to set array key as it's index in 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作為索引: 在此處輸入圖片說明

相反,我希望輸出數組是這樣的:

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

這樣我將123和324替換為索引1而不是0。 這樣,如果在我的代碼中寫入test_array [123],我應該能夠在輸出中獲得00:00:00。 是否有可能實現我在這里想要做的事情? 建議更好的方法

我該怎么做呢?

您可以將array#mapObject.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); 

如果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]
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM