我有一个具有两个属性的对象数组:canais和topicos
channel: Array(3)
0: {canais: 'canal1', topicos: 'topico1'}
1: {canais: 'canal2', topicos: 'topico2'}
2: {canais: 'canal3', topicos: 'topico3'}我想分裂成两个字符串数组,称为迦南和topicos:
canais : [ "canal1" , "canal2", "canal3" ];
topicos: [ "topico1" , "topico2", "topico3" ];发布于 2021-11-28 21:01:06
你能做到的
const canais = channel.map(item => item.canais)
const topicos = channel.map(item => item.topicos)发布于 2021-11-28 21:04:36
您可以通过多种方式这样做:
[canais, topicos],然后转到结果以获得两个数组(在这里original是您的数组):const transpose = arr => arr.map((x,i) => arr.map(x => xi)) const迦南,topicos = transpose(original.map(a => a.canais,a.topicos))
还请参阅:Transposing a 2D-array in JavaScript,它是上面的transpose函数的起源.
forEach循环并累积:const迦南= [] const topicos = [] original.forEach(el => { canais.push(el.canais) topicos.push(el.topicos) })
for循环并累加:const allCanais = [] const allTopicos = [] for (const {迦南,topicos} of原){allCanais.push(迦南) allTopicos.push(topicos) }
el.canais,然后提取所有el.topicos),尽管这会对可能不需要的数据进行两次迭代。发布于 2021-11-28 21:03:47
如果您需要它是动态的,您可以使用嵌套的for循环来遍历每个项,并根据键创建/添加数组,然后使用一个对象来存储每个值数组。
let channelNames = {};
for(let c of channel){
for(let key in c){
if(!channelNames[key])
channelNames[key] = [];
channelNames[key].push(i[key]);
}
}https://stackoverflow.com/questions/70147391
复制相似问题