Tengo estas 2 matrices. La primera está fija y no cambia y contiene la identificación de la segunda matriz:
fixed=["123","456","789"]El segundo puede cambiar
variableArray=[{name:"Joe",id:"123"},{name:"Joe",id:"456"},{name:"Joe",id:"789"}]Quiero devolver verdadero si, incluso si hubo algunos cambios al final, la matriz variable tiene la misma longitud y contiene exactamente las mismas claves del "fijo"
NO ES VÁLIDO:
fixed=["123","456","789"] variableArray=[{name:"Joe",id:"456"},{name:"Joe",id:"789"}]devuelve falso porque falta la identificación "123" (y la longitud también es diferente, por lo que se excluye de forma predeterminada)
NO VÁLIDO :
fixed=["123","456","789"] variableArray=[{name:"Joe",id:"123"},{name:"Joe",id:"456"},{name:"Joe",id:"001"}]esto devolverá falso porque, incluso si contiene 3 elementos como los que hay en el "fijo", falta el id "789" y tiene otro "001" en su lugar
como mencionó @mplungjan, puede usar Every :
let fixed = ["123", "456", "789"]; let variableArray1 = [{ name: "Joe", id: "123" }, { name: "Joe", id: "456" }, { name: "Joe", id: "789" }]; let variableArray2 = [{ name: "Joe", id: "123" }, { name: "Joe", id: "456" }, { name: "Joe", id: "001" }] let containsAll1 = variableArray1.every(elem => fixed.includes(elem.id)); let containsAll2 = variableArray2.every(elem => fixed.includes(elem.id)); console.log(containsAll1, containsAll2);