2017-08-25 139 views
-4

什麼是創建數組的子陣列的最好和最有效的方法?我有對象的數組如下:創建一個數組的子陣列

bigArray = [ 
    { 
     id: 1, 
     name: "Marc", 
     age: 29 
    }, 
    { 
     id: 2, 
     name: "Caroline", 
     age: 27 
    }, 
    { 
     id: 3, 
     name: "John", 
     age: 30 
    }]; 

我想生成3個子陣列如

  • IDS = [1,2,3]
  • 名稱= [」馬克·」, 「卡羅琳」, 「約翰」]
  • 年齡= [29,27,30]

我試圖與嵌套 「for」 循環,並與地圖()方法進行實驗,但我m不是c認爲這是最乾淨的方式。尤其是因爲我可以有幾十個參數爲每個對象(即「姓氏,城市,汽車......)

+0

你只需要一個循環。解析JSON對象逐一提取數據。這是爲O(n) –

回答

2

假設所有對象都陣列中相同的鍵,我會做這種方式:

bigArray = [ 
 
    { 
 
     id: 1, 
 
     name: "Marc", 
 
     age: 29 
 
    }, 
 
    { 
 
     id: 2, 
 
     name: "Caroline", 
 
     age: 27 
 
    }, 
 
    { 
 
     id: 3, 
 
     name: "John", 
 
     age: 30 
 
    }]; 
 

 
let output = {} 
 

 
Object.keys(bigArray[0]).forEach(key => { 
 
\t output[key+"s"] = bigArray.map(obj => obj[key]) \t 
 
}) 
 

 
// Or as a one-liner, to show off to your friends 
 
Object.keys(bigArray[0]).forEach(key => output[key+"s"] = bigArray.map(obj => obj[key])) 
 

 
console.log(output)

然後你存取權限與output.names數據,output.ages

+0

'出來put'沒有名爲'names'或'ages'的屬性。 – ASDFGerte

+0

沒錯,代碼已更新。謝謝 –

+0

謝謝傑里米,正是我在找的東西。我很擔心foreach循環在一個大陣列中會相當耗費,但我很高興地看到這是你的建議 – Bertrand