你好,我正在尝试循环遍历一个数组,并将每个值与不同数组的值进行比较。不在第二个数组中的每一个值我都要控制台。将它们记录在第三个数组中。我怎么能做到呢?我尝试了很多东西,在互联网上查找了一些技巧和例子,但对我来说都不管用。以下是任务:*控制台记录fruitsToCheck
中未包含在数组fruitsWeHave
中的所有果实。
- 用符号
,
分割fruitsToCheck
中的所有果实==>已完成 - 如果结果数组中的所有水果都包含在
fruitsWeHave
中,请检查它们*
以下是代码。
let fruitsWeHave = ["Bananas", "Apples", "Pineapples", "Watermelons", "Mangos"];
let fruitsToCheck = "Mangos,Kiwis,Oranges,Watermelons,Coconuts,Papayas,Grapes";
// TODO: Console log all fruits from fruitsToCheck which are not included in
// the array fruitsWeHave
let splitFruitsToCheck = fruitsToCheck.split(',')
console.log(splitFruitsToCheck);
"我尝试使用for循环来比较fruitsToCheck
的每个索引和fruitsWeHave
的每个索引。我的想法是让循环遍历fruitsToCheck
的每个索引,并对它们进行比较,如果它不在fruitsToHave
中,则将其推入一个新数组,在检查完所有内容后,我将console.log
作为新数组">
基于此注释,您拥有解决此问题的所有组件。这里有一些变化。
- 基本
for loop
和indexOf
:
const fruitsWeHave = ['Bananas', 'Apples', 'Pineapples', 'Watermelons', 'Mangos'];
const fruitsToCheck = 'Mangos,Kiwis,Oranges,Watermelons,Coconuts,Papayas,Grapes';
const splitFruitsToCheck = fruitsToCheck.split(',');
// Declare a new array
const unavailableFruit = [];
// Iterate over `splitFruitsToCheck` and if the current
// fruit is not in `fruitsWeHave` (indexOf is -1)
// push it into `unavailableFruit`
for (let i = 0; i < splitFruitsToCheck.length; i++) {
const fruit = splitFruitsToCheck[i];
if (fruitsWeHave.indexOf(fruit) < 0) {
unavailableFruit.push(fruit);
}
}
// Log unavailable fruit
console.log(unavailableFruit);
for/of loop
和includes
:
const fruitsWeHave = ['Bananas', 'Apples', 'Pineapples', 'Watermelons', 'Mangos'];
const fruitsToCheck = 'Mangos,Kiwis,Oranges,Watermelons,Coconuts,Papayas,Grapes';
const splitFruitsToCheck = fruitsToCheck.split(',');
// Declare a new array
const unavailableFruit = [];
// Iterate over `splitFruitsToCheck` and if the current
// fruit is not in `fruitsWeHave` push it into `unavailableFruit`
for (const fruit of splitFruitsToCheck) {
if (!fruitsWeHave.includes(fruit)) {
unavailableFruit.push(fruit);
}
}
// Log unavailable fruit
console.log(unavailableFruit);
- 使用
filter
-filter
返回一个满足回调条件的新元素数组:
const fruitsWeHave = ['Bananas', 'Apples', 'Pineapples', 'Watermelons', 'Mangos'];
const fruitsToCheck = 'Mangos,Kiwis,Oranges,Watermelons,Coconuts,Papayas,Grapes';
const splitFruitsToCheck = fruitsToCheck.split(',');
// We don't have to declare a separate third array because
// `filter` itself returns an array
const unavailableFruit = splitFruitsToCheck.filter(fruit => {
return !fruitsWeHave.includes(fruit);
});
console.log(unavailableFruit);
for (const fruit of splitFruitsToCheck) {
if (!fruitsWeHave.includes(fruit)) {
console.log(fruit);
}
}
您从拆分fruitsToCheck
数组开始是正确的!
基本上,你需要检查每种水果,如果fruitsWeHave
没有这种水果,那么你可以做控制台日志。
如果你想让我解释什么,请告诉我:(
尝试下面的代码来查找水果中不存在的水果WeHave数组
const fruitsWeHave = ["Bananas", "Apples", "Pineapples", "Watermelons", "Mangos"];
const fruitsToCheck = "Mangos,Kiwis,Oranges,Watermelons,Coconuts,Papayas,Grapes";
const checkList = fruitsToCheck.split(',');
const fruitsMap = new Map();
// setting all the fruits in fruitsWeHave to Map object
for(const fruit of fruitsWeHave) {
fruitsMap.set(fruit, true);
}
for(const fruit of checkList) {
// access fruit name in constant time O(1)
if(!fruitsMap.has(fruit)) { // checking whether fruit presents or not
console.log(fruit);
}
}