Quiero una función que devuelva true si y solo si una matriz dada incluye todos los elementos de una matriz "objetivo" dada. Como sigue.
const target = [ 1, 2, 3, ]; const array1 = [ 1, 2, 3, ]; // true const array2 = [ 1, 2, 3, 4, ]; // true const array3 = [ 1, 2, ]; // false¿Cómo puedo lograr el resultado anterior?
Puede combinar los métodos .every( .every() e .includes() :
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)); // falseEl método every() prueba si todos los elementos de la matriz pasan la prueba implementada por la función proporcionada. Devuelve un valor booleano. Es lógico que si llama a every() en la matriz original y le proporciona una función que verifica si cada elemento de la matriz original está contenido en otra matriz, obtendrá su respuesta. Como tal:
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); }Puedes probar con Array.prototype.every() :
El método
every()prueba si todos los elementos de la matriz pasan la prueba implementada por la función proporcionada.
y Array.prototype.includes() :
El método include
includes()determina si una matriz incluye un determinado elemento, devolviendo verdadero o falso según corresponda.
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]));