Kontrollera om varje värde ingår eller inte i en array med hjälp av JavaScript eller TypeScript


Jag har nedanstående typ av 2 arrayer. Jag vill kontrollera att varje värde i ValuesToBeCheckArr finns i ActualArr. Om vissa värden saknas i actualarr ska det returnera 0 eller false. Jag har också en operatorvariabel, möjliga värden för den är AND/OR. Jag har skrivit lösningen för OR-operatorn men får ingen idé för AND-operatorn.

ActualArr = [1,2,3,4,5,6,7,21,25,35,50,132];
ValuesToBeCheckArr = [2,3,50,132];
Operator = AND/OR

if(Operator == AND) {
   //check every value of ValuesToBeCheckArr should be in the ActualArr
} else if(Operator == OR) {
   //check at least one value of ValuesToBeCheckArr should be in the ActualArr
   const checkIncluded = (arr1, arr2) => arr1.some(item => arr2.includes(item));
   const isIncluded1 = checkIncluded(["1", "2"], ["3"]) // true
}

Svar #1

Operator == OCH

==> använda Array#every kombinerat med Array#some som nedan

const ActualArr = [1,2,3,4,5,6,7,21,25,35,50,132];
const ValuesToBeCheckArr = [2,3,50,132];

const result = ValuesToBeCheckArr.every(v => ActualArr.some(a => v == a))
console.log(result);

Metoden every() testar om alla element i arrayen uppfyller testet som implementeras av den angivna funktionen. Den returnerar ett booleskt värde.

Metoden some() testar om åtminstone ett element i arrayen uppfyller testet som implementeras av den angivna funktionen. Den returnerar true om den i arrayen hittar ett element för vilket den angivna funktionen returnerar true; annars returnerar den false. Den ändrar inte arrayen.

Svar #2

Följande implementering kommer att fungera :-

function checkInclusion(actualArr,checkArr,operator){
 let isIncluded = operator === "AND"?
 actualArr.every(item=>checkArr.includes(item)):
 actualArr.some(item=>checkArr.includes(item))
 return isIncluded;
}


console.log(checkInclusion(["1", "2","3"], ["1","3"],"AND"));
console.log(checkInclusion(["1", "2","3"], ["1","3"],"OR"));