¿Hay alguna forma de saber si todos los valores de una matriz de enteros están en una matriz de objetos? Si los valores de la matriz de enteros están todos en la matriz de objetos, como retorno pretendo verdadero y falso lo contrario, es decir, los valores no están todos presentes en el objeto.
Sizes = [ { id: 1, }, { id: 2, }, { id: 3, }, { id: 4, }, ]; Number = [1, 2, 3];Use every + some :
Number.every(n => Sizes.some(obj => obj.id === n)) Sizes = [ { id: 1, }, { id: 2, }, { id: 3, }, { id: 4, }, ]; Number = [1, 2, 3]; console.log(Number.every(n => Sizes.some(obj => obj.id === n)))Puede map los valores a una nueva matriz de valores para verificar, luego verificar si los valores includes los números.
const sizes = [{ id: 1, }, { id: 2, }, { id: 3, }, { id: 4, }, ]; const check = (ns, szs) => { const nsToCheck = szs.map((x) => x.id); // get values for (const number of ns) { if (!nsToCheck.includes(number)) return false; // return false if !include } return true; // otherwise return true } const numbersWillSucceed = [1, 2, 3, 4]; const numbersWillFail = [1, 5]; console.log("Will succeed: ",check(numbersWillSucceed, sizes)); console.log("Will fail: ",check(numbersWillFail, sizes));Puede resolver este problema fácilmente con funciones ya existentes para JavaScript y Arrays.
Con:
const test1 = [ { id: 1, }, { id: 2, }, { id: 3, }, { id: 4, }, ];y:
const test2 = [1, 2, 3];Uno puede usar:
test2.every(t2 => test1.find(t1 => t1.id === t2) !== undefined) para verificar si todos los elementos de test2 existen en test1 . Simplemente prueba ( every ) si cada elemento de test1 está contenido en la matriz test2 (con find ).
No utilice variables como "Número", ya que Número ya existe en JavasScript, consulte también https://eslint.org/docs/rules/no-shadow#builtinglobals