我有一組具有兩個屬性的物件:canais和topicos:
channel: Array(3)
0: {canais: 'canal1', topicos: 'topico1'}
1: {canais: 'canal2', topicos: 'topico2'}
2: {canais: 'canal3', topicos: 'topico3'}
我想分成兩個名為 canais 和 topicos 的字串陣列:
canais : [ "canal1" , "canal2", "canal3" ];
topicos: [ "topico1" , "topico2", "topico3" ];
uj5u.com熱心網友回復:
你可以做
const canais = channel.map(item => item.canais)
const topicos = channel.map(item => item.topicos)
uj5u.com熱心網友回復:
您可以通過多種方式執行此操作:
將每個元素映射到一個 2 元素陣列
[canais, topicos],然后將結果轉置以獲得兩個陣列(這original是您的陣列):const transpose = arr => arr[0].map((x, i) => arr.map(x => x[i])) const [canais, topicos] = transpose(original.map(a => [a.canais, a.topicos]))另請參閱:在 JavaScript 中轉置 2D 陣列,這是上述
transpose函式的起源。使用
forEach回圈并累加:const canais = [] const topicos = [] original.forEach(el => { canais.push(el.canais) topicos.push(el.topicos) })正常
for回圈和累加:const allCanais = [] const allTopicos = [] for (const {canais, topicos} of original) { allCanais.push(canais) allTopicos.push(topicos) }映射兩次(首先提取所有
el.canais然后全部el.topicos),盡管這會在可能不需要的資料上迭代兩次。
uj5u.com熱心網友回復:
如果您需要它是動態的,您可以使用嵌套的 for 回圈遍歷每個專案并根據鍵創建/添加到陣列,然后使用一個物件來存盤每個值陣列。
let channelNames = {};
for(let c of channel){
for(let key in c){
if(!channelNames[key])
channelNames[key] = [];
channelNames[key].push(i[key]);
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/368948.html
標籤:javascript
