我怎么能把☺如何比较两个数组并记录相同或不同的值



你好,我正在尝试循环遍历一个数组,并将每个值与不同数组的值进行比较。不在第二个数组中的每一个值我都要控制台。将它们记录在第三个数组中。我怎么能做到呢?我尝试了很多东西,在互联网上查找了一些技巧和例子,但对我来说都不管用。以下是任务:*控制台记录fruitsToCheck中未包含在数组fruitsWeHave中的所有果实。

  1. 用符号,分割fruitsToCheck中的所有果实==>已完成
  2. 如果结果数组中的所有水果都包含在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作为新数组">

基于此注释,您拥有解决此问题的所有组件。这里有一些变化。

  1. 基本for loopindexOf

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);

  1. for/of loopincludes

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);

  1. 使用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);
}
}

最新更新