繁体   English   中英

根据键名组合对象数组中的值

[英]Combine values from an array of objects on the basis of key name

const input = [{car: 'BMW'}, {car: 'Benz'}, {bike: 'KTM'}, {bike: 'Honda'}]

const output = {汽车:['宝马','奔驰'],自行车:['KTM','本田']}

这可能吗?

group by 问题可以使用reduce来解决。 这里我假设输入数组中的每个元素只有 1 个键值对

 const input = [{car: 'BMW' }, {car: 'Benz'}, {bike: 'KTM'}, {bike: 'Honda'}] const output = input.reduce((acc,curr)=>{ const [k,v] = Object.entries(curr)[0] acc[k] = acc[k] || [] acc[k].push(v) return acc },{}) console.log(output)

这非常简单 - 遍历对象数组,检查键是否存在于 output object 如果不存在 - 使用值创建键 - 数组并推送值,否则只需将值推送到现有键。

const input = [{car: 'BMW' }, {car: 'Benz'}, {bike: 'KTM'}, {bike: 'Honda'}]
let output = {};
for(let i = 0 ; i < input.length ; i++){
    const key = Object.keys(input[i])[0];
    if(!output[key]){
        output[key] = [input[i][key]];
    }else{
        output[key].push(input[i][key])
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM