Tengo una matriz de tamaño indefinido que contiene objetos con los mismos nombres de propiedad. Lo que estoy buscando es una forma limpia de verificar si todos estos elementos tienen el mismo valor asignado a una propiedad específica o no.
Ejemplo [{edad:10}, {edad:10}]
Necesito una forma de devolver verdadero en este caso, ya que la edad es la misma en todos los objetos. Si un objeto tuviera cualquier otro valor que no sea 10, tendría que devolver falso.
Mi enfoque fue un bucle for, guardando el valor de las primeras iteraciones y verificando si el siguiente es el mismo; de lo contrario, regresa. ¿Hay una forma más limpia de hacer esto?
Puedes hacer lo siguiente
const checkPropertyIsEqual = (myArray, propertyName) => { const res = myArray.map(arrayItem => arrayItem[propertyName]); return (new Set(res).size === 1); } console.log(checkPropertyIsEqual([{age: 10}, {age: 10}], "age")) console.log(checkPropertyIsEqual([{age: 20}, {age: 10}], "age")) const ages = [{ age: 10 }, { age: 10 }, { age: 10 }]; var isSameValue = ages.every((ele) => { return ele.age === 10; }); console.log(isSameValue); //trueEscriba una pequeña función de ayuda que acepte la matriz y la propiedad para inspeccionar, cree una matriz de valores usando el map y verifique si todos son iguales con every .
const arr = [{age:10}, {age:10}]; const arr2 = [{age:1}, {age:10}]; const arr3 = [{name:'Bob'}, {name:'Bob'}]; const arr4 = [{name:'Bob'}, {name:'Steve'}]; // For every object in the array are all the values // of the property the same value function sameValue(arr, prop) { if (!arr.length) return 'Array is empty'; return arr .map(el => el[prop]) .every((el, _, arr) => el === arr[0]); } console.log(sameValue(arr, 'age')); console.log(sameValue(arr2, 'age')); console.log(sameValue(arr3, 'name')); console.log(sameValue(arr4, 'name')); console.log(sameValue([], 'name'));