#javascript
Вопрос:
Я пытаюсь взять список покупок из списка, сверить его с тем, что у вас уже есть, и поместить в новый список. Я учусь перебирать списки и не могу понять, почему я получаю тот результат, который я есть. Я хочу, чтобы на выходе был список вещей, которые не были найдены в списке вещей, которые у вас уже есть. На выходе в данный момент выводится то, что мне нужно, но несколько раз. Не уверен, почему. Спасибо
let groceryList = ['Bread', 'Cereal', 'Bagels', 'Water', 'Apple'];
let currentGrocery = ['Eggs', 'Lettuce', 'Milk', 'Cheese','Bread','Water','Oil'];
let newList = [];
for (let i = 0; i < groceryList.length; i ) {
for (let j = 0; j < currentGrocery.length; j ){
if (groceryList[i] !== currentGrocery[j]){
newList.push(groceryList[i]);
}
}
}
console.log(newList);
Комментарии:
1. pease добавьте желаемый результат.
Ответ №1:
let groceryList = ['Bread', 'Cereal', 'Bagels', 'Water', 'Apple'];
let currentGrocery = ['Eggs', 'Lettuce', 'Milk', 'Cheese','Bread','Water','Oil'];
let newList = [];
currentGrocery.forEach(item =>{
if (!groceryList.includes(item)) newList.push(item);
})
console.log(newList);
Ответ №2:
Вы можете фильтровать массив.
const
groceryList = ['Bread', 'Cereal', 'Bagels', 'Water', 'Apple'],
currentGrocery = ['Eggs', 'Lettuce', 'Milk', 'Cheese', 'Bread', 'Water', 'Oil'],
newList = currentGrocery.filter(item => !groceryList.includes(item));
console.log(...newList);
Ответ №3:
Вы нажимаете на товар из своего списка покупок для каждого несоответствующего текущего продукта. Что вы хотите сделать, так это перейти к новому списку только в том случае, если нет совпадений с текущими продуктами.
Наивным способом этого можно было бы достичь с помощью
let found = false;
for (let i = 0; i < groceryList.length; i ) {
for (let j = 0; j < currentGrocery.length; j ){
if (groceryList[i] == currentGrocery[j]){
found = true;
break;
}
}
if (found) {
newList.push(groceryList[i]);
found = false;
}
}
Более понятный подход использует filter() и включает в себя функции():
let newlist = groceryList.filter(item => !currentGrocery.includes(item));
console.log(newlist);