我有一组对象“汽车”
let cars = [
{id: 1, name: 'Mercedes', year: '2015'},
{id: 2, name: 'Mercedes', year: '2000'},
{id: 3, name: 'BMW', year: '2010'},
{id: 4, name: 'BMW', year: '2004'},
{id: 4, name: 'BMW', year: '2004'},
{id: 4, name: 'BMW', year: '2004'},
{id: 4, name: 'BMW', year: '2004'},
{id: 4, name: 'BMW', year: '2004'},
{id: 5, name: 'Volvo', year: '2012'},
{id: 6, name: 'Volvo', year: '2014'},
{id: 7, name: 'Volvo', year: '2010'},
{id: 8, name: 'Toyota', year: '2012'},
{id: 8, name: 'Jeep', year: '2011'},
];
以及一个包含汽车数量的对象
let obj = {
BMW: 6,
Jeep: 1,
Mercedes: 2,
Toyota: 1,
Volvo: 3,
}
我需要从汽车创建新数组,其中只有一份对象副本,并将“数量”属性添加到适当的对象。我怎样才能实现这个目标?
预期输出。
newArray = [
{id: 1, name: 'Mercedes', year: '2015', quantity: 2},
{id: 3, name: 'BMW', year: '2010', quantity: 6},
{id: 5, name: 'Volvo', year: '2012', quantity: 3},
{id: 8, name: 'Toyota', year: '2012', quantity: 1},
{id: 8, name: 'Jeep', year: '2011', quantity: 1},
]
最佳答案
可以使用数组和哈希表直接进行计数。
let cars = [{ id: 1, name: 'Mercedes', year: '2015' }, { id: 2, name: 'Mercedes', year: '2000' }, { id: 3, name: 'BMW', year: '2010' }, { id: 4, name: 'BMW', year: '2004' }, { id: 4, name: 'BMW', year: '2004' }, { id: 4, name: 'BMW', year: '2004' }, { id: 4, name: 'BMW', year: '2004' }, { id: 4, name: 'BMW', year: '2004' }, { id: 5, name: 'Volvo', year: '2012' }, { id: 6, name: 'Volvo', year: '2014' }, { id: 7, name: 'Volvo', year: '2010' }, { id: 8, name: 'Toyota', year: '2012' }, { id: 8, name: 'Jeep', year: '2011' }],
result = Object.values(cars.reduce((r, o) => {
r[o.name] = r[o.name] || { ... o, quantity: 0 };
r[o.name].quantity++;
return r;
}, []));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 使用另一个对象的键从对象数组创建新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62451760/