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