Я несколько дней боролся с этой итерацией. Независимо от того, каким образом я использовал эти методы, я мог только отображать или фильтровать массив «автомобилей» без дополнительных алгоритмов. Я хочу создать один массив объектов, имен брендов, который будет включать имена драйверов, создавая массив из объекта бренда.
Я пытался смешивать эти методы по-разному и в разных позициях в моем коде, но единственное, чего я достиг - это сопоставленный массив с брендами без массива внутри. Я также просмотрел весь стек, чтобы найти похожую проблему и исключительное решение.
var cars = [
{'brand': 'Ford'},
{'brand': 'Seat'},
{'brand': 'Opel'},
{'brand': 'Kia'},
{'brand': 'Mitsubishi'},
{'brand': 'Toyota'}
];
var drivers = [
{'name': 'Mark', 'car': 'Seat'},
{'name': 'John', 'car': 'Ford'},
{'name': 'Michael', 'car': 'Kia'},
{'name': 'Joe', 'car': 'Toyota'}
];
var assosiated = {};
console.log(assosiated);
Это то, что я пытался сделать, но это не соответствует моим ожиданиям:
assosiated = cars.map(function (carss) {
var driver = drivers.filter(function (dri) {
return carss.brand === dri.car;
});
return carss.brand;
}).reduce(function (prev, curr) {
return prev + '\n' + curr;
});
Я ожидаю, что результат будет выглядеть следующим образом:
assosiated = {
"Ford": [
{"name": "John"}
],
"Seat": [
{"name": "Mark"}
],
"Opel": [],
"Kia": [
{"name": "Michael"}
],
"Mitsubishi": [],
"Toyota": [
{"name": "Joe"}
]
}
Я также хотел бы использовать все эти методы, написанные выше. Любая идея, что я могу сделать, чтобы сортировать это так?