#javascript #arrays #angular
#javascript #массивы #angular
Вопрос:
Добрый день, разработчики, у меня есть эти 2 массива
let arrayOfBookings=[
{restaurantId: 1, turnName: "10:00_am"},
{restaurantId: 1, turnName: "11:00_am"},
{restaurantId: 2, turnName: "11:00_am"}
];
let restaurantSelectedTurns=[
{restaurantId: 1, turnName: "10:00_am"},
{restaurantId: 1, turnName: "11:00_am"},
{restaurantId: 1, turnName: "12:00_am"},
{restaurantId: 1, turnName: "01:00_pm"}
];
Имея в виду элементы каждого объекта (restaurantId и turnName), где, если, во-первых
, restaurantId обоих сравниваемых элементов равны, тогда можно будет проверить, не является ли turnName.
Если это так, то я бы отправил этот объект в новый контейнер массива.
Таким образом, имея в виду эту логику, я установил это
...some variable called noRepeated:[]=[];
restaurantSelectedTurns.forEach((turn) => {
arrayOfBookings.forEach((booking) => {
if (turn.restaurantId == booking.restaurantId) {
if (turn.turnName != booking.turnName) {
this.noRepeated.push(turn);
}
}
});
console.log(this.noRepeated);
});
Но по какой-либо причине, когда я регистрирую не повторяющийся результат, я получаю это
{restaurantId: 1, turnName: "10:00_am"},
{restaurantId: 1, turnName: "11:00_am"},
{restaurantId: 1, turnName: "12:00_am"},
{restaurantId: 1, turnName: "12:00_am"},
{restaurantId: 1, turnName: "01:00_pm"},
{restaurantId: 1, turnName: "01:00_pm"},
вместо
{restaurantId: 1, turnName: "12:00_am"},
{restaurantId: 1, turnName: "01:00_pm"},
Эта логика использует angular .
Заранее спасибо!!!!
Ответ №1:
- первая ошибка, которую вы допускаете в своем коде, заключается в том, что вы повторяете массив, содержащий больше элементов.
- во-вторых, вам не нужно перебирать 2 таблицы и создавать внутри них условие, что считается не решением для хорошей производительности.
Поэтому я пытаюсь сделать для вас простое решение:
const newArrayOfRestaurants = [];
for (const item of arrayOfBookings) {
if (restaurantSelectedTurns.some(elt => elt.restaurantId === item.restaurantId amp;amp; elt.turnName === item.turnName)){
newArrayOfRestaurants.push(item);
}
}