I want a function that returns true if and only if a given array includes all the elements of a given "target" array. As follows.
const target = [ 1, 2, 3, ];
const array1 = [ 1, 2, 3, ]; // true
const array2 = [ 1, 2, 3, 4, ]; // true
const array3 = [ 1, 2, ]; // false
How can I accomplish the above result?
You can combine the .every() and .includes() methods:
let array1 = [1,2,3],
array2 = [1,2,3,4],
array3 = [1,2];
let checker = (arr, target) => target.every(v => arr.includes(v));
console.log(checker(array2, array1)); // true
console.log(checker(array3, array1)); // false
The every() method tests whether all elements in the array pass the test implemented by the provided function. It returns a Boolean value. Stands to reason that if you call every() on the original array and supply to it a function that checks if every element in the original array is contained in another array, you will get your answer. As such:
const ar1 = ['a', 'b'];
const ar2 = ['c', 'd', 'a', 'z', 'g', 'b'];
if(ar1.every(r => ar2.includes(r))){
console.log('Found all of', ar1, 'in', ar2);
}else{
console.log('Did not find all of', ar1, 'in', ar2);
}
You can try with Array.prototype.every():
The
every()method tests whether all elements in the array pass the test implemented by the provided function.
and Array.prototype.includes():
The
includes()method determines whether an array includes a certain element, returning true or false as appropriate.
var mainArr = [1,2,3];
function isTrue(arr, arr2){
return arr.every(i => arr2.includes(i));
}
console.log(isTrue(mainArr, [1,2,3]));
console.log(isTrue(mainArr, [1,2,3,4]));
console.log(isTrue(mainArr, [1,2]));