我有汽车对象数组,我想根据包含 2 个值对的对象的 make value arry 返回数组
var cars =
[ { make: 'audi', model: 'r8', year: '2012' }
, { make: 'ford', model: 'mustang', year: '2012' }
, { make: 'ford', model: 'fusion', year: '2015' }
, { make: 'kia', model: 'optima', year: '2012' }
, { make: 'audi', model: 'rs5', year: '2013' }
]
输出像
[ { Id: 'audi-group', value: 'audi-group' }
, { id: 'r8', value: '2012' }
, { id: 'r5', value: '2013' },
{id:'ford-group', value:'ford-group'},
{id: 'fusion', value: '2015' }
//...
]
所有基于“make”的订单都应该来
答案 0 :(得分:0)
let cars = [
{ make: "audi", model: "r8", year: "2012" },
{ make: "ford", model: "mustang", year: "2012" },
{ make: "ford", model: "fusion", year: "2015" },
{ make: "kia", model: "optima", year: "2012" },
{ make: "audi", model: "rs5", year: "2013" },
];
cars = cars.sort((a, b) => a.make.localeCompare(b.make))
let formattedCars = []
cars.forEach((car, index) => {
const { make, model, year } = car
const group = make.concat('-group')
if ((cars[index - 1] || {}).make !== cars[index].make) {
formattedCars = [...formattedCars, { id: group, value: group }]
}
formattedCars = [...formattedCars, { id: model, value: year }]
})
console.log(formattedCars)
答案 1 :(得分:0)
const cars = [
{ make: "audi", model: "r8", year: "2012" },
{ make: "ford", model: "mustang", year: "2012" },
{ make: "ford", model: "fusion", year: "2015" },
{ make: "kia", model: "optima", year: "2012" },
{ make: "audi", model: "rs5", year: "2013" },
];
const sortedCars = cars.sort((a, b) => {
const makeA = a.make.toUpperCase();
const makeB = b.make.toUpperCase();
let comparison = 0;
if (makeA > makeB) {
comparison = 1;
} else if (makeA < makeB) {
comparison = -1;
}
return comparison;
})
let formattedCars = []
sortedCars.forEach((car, index) => {
const { make, model, year } = car
const group = make.concat('-group')
if ((cars[index - 1] || {}).make !== cars[index].make) {
formattedCars = [...formattedCars, { id: group, value: group }]
}
formattedCars = [...formattedCars, { id: model, value: year }]
})
console.log(formattedCars)