У меня есть массив «пользователей» и массив «заказов».
Я хочу перечислить все order_ids для каждого user_id.
var users = {
0: {
user_id: 111,
user_name: "user111",
isActive: 0
},
1: {
user_id: 112,
user_name: "use112",
isActive: 1
},
2: {
user_id: 113,
user_name: "use113",
isActive: 0
},
...
};
var orders = {
888: {
order_id: 888,
user_id: 111
},
889: {
order_id: 889,
user_id: 111
},
890: {
order_id: 890,
user_id: 113
}
};
Какова наилучшая практика (с точки зрения эффективности), чтобы получить мне этот результат
user_ids (user_id в качестве ключа) для заказов (значение массива orders ids):
result = {
111: [ 888, 889 ],
113: [ 890 ]
};
Использование объекта / массива "пользователь" является обязательным, поскольку моя переменная пользователя представляет собой отфильтрованный список пользователей, а массив userToOrder должен извлечь все order_ids некоторых конкретных пользователей и создать из них новый объект.
- Нет для циклов, просто функциональность es6.
- Попытка избежать
.forEach()
для этой практики, если это невозможно.
- нет ответов на нагрузку, если только не пример "vanilla es6".
Это были мои последние попытки, но безуспешно:
let userToOrdersArray = users.map( function(user) {
/*Object.values(orders).reduce((newObj, orderData) => {
newObj[user.user_id][] = orderData.order_id;
}, {});*/
Object.values(orders).filter(function(orderData) {
return (orderData.user_id === user.user_id);
});
});
console.log(userToOrdersArray);