Necesito que la condición sea verdadera solo si todas las propiedades del objeto (variables) no son iguales entre sí. ¿Cómo puedo condicionar la desigualdad de las propiedades de los objetos de una manera más óptima? Si el número de ellos crece, la combinación de obj[1]!=obj[2] y así sucesivamente crecerá enormemente
var obj = { 1: linksArray[randomNumber], 2: linksArray[randomNumber2], 3: linksArray[randomNumber3] } if(obj[1]!=obj[2] && obj[1]!=obj[3] && obj[2]!=obj[3] && obj[2]!=obj[1] && obj[3]!=obj[2] && obj[3]!=obj[1] ) { arr.push(linksArray[randomNumber]); arr.push(linksArray[randomNumber2]); arr.push(linksArray[randomNumber3]); break; }Obtenga los valores del objeto y cree un Conjunto. Si el tamaño del conjunto es idéntico a la longitud de los valores, todos los valores son únicos:
const allUnique = obj => { const values = Object.values(obj) return new Set(values).size === values.length } const obj1 = { 1: 'a', '2': 'b', 3: 'c' } const obj2 = { 1: 'a', '2': 'b', 3: 'c', 4: 'b' } console.log(allUnique(obj1)) // true console.log(allUnique(obj2)) // falseColoque todos los valores en una array , luego utilícelos para crear un Set (estructura de datos donde todos los elementos son diferentes, documentación ).
Si la matriz tiene la misma cantidad de elementos que el conjunto, está seguro de que todos son diferentes.
var obj1 = { field1: true, fiedl2: 2, field3: "red", } var obj2 = { field1: true, fiedl2: 2, field3: "red", field4: 2 } function allDifferent(obj) { const values = Object.values(obj); return new Set(values).size === values.length } console.log(allDifferent(obj1)); console.log(allDifferent(obj2));Compruebe si hay duplicados creando un conjunto de todos los valores de los objetos; estos serán únicos. Luego compare el tamaño del Conjunto con el número de valores/clave en el objeto original. Si son diferentes, hay un duplicado en el original. Si son iguales, los valores del original son únicos.
const uniqueValues = new Set(Object.keys(obj)); if (uniqueValues.size == obj.length) {...do stuff}