Quiero filtrar la lista de objetos donde la ciudad y el estado no son los mismos, y luego crear una lista de ciudades a partir de los objetos filtrados donde la temperatura es inferior a 40. pero la condición es tanto el estado como la ciudad no deberían ser mismo
let arr = [
{
city:"chennai",
state: "tamilnadu",
temp: 44
},
{
city:"coimbator",
state: "tamilnadu",
temp: 39
},
{
city:"mumbai",
state: "maharashtra",
temp: 32
},
{
city:"delhi",
state: "delhi",
temp: 24
},
{
city:"kolkata",
state: "west bengal",
temp: 28
}
];
Código JavaScript:
const uniqueStateCity = [];
const unique = arr.filter(element => {
const isDuplicate = uniqueStateCity.includes(element.city);
if (!isDuplicate) {
if(element.temp < 40)
{
uniqueStateCity.push(element.city );
return true;
}
}
return false;
});
console.log(unique );
¡Deberías probar esto en tu código!
simplemente ponga la condición en la declaración de resultados con la función de flecha y estará listo para comenzar.
let arr = [
{
city: "chennai",
state: "tamilnadu",
temp: 44,
},
{
city: "coimbator",
state: "tamilnadu",
temp: 39,
},
{
city: "mumbai",
state: "maharashtra",
temp: 32,
},
{
city: "delhi",
state: "delhi",
temp: 24,
},
{
city: "kolkata",
state: "west bengal",
temp: 28,
},
];
const result = arr.filter((data) => data.temp < 40 && data.state !== data.city);
const data = result.map((x) => x.city);
console.log(data);
let arr = [
{
city: "chennai",
state: "tamilnadu",
temp: 44,
},
{
city: "coimbator",
state: "tamilnadu",
temp: 39,
},
{
city: "mumbai",
state: "maharashtra",
temp: 32,
},
{
city: "mumbai",
state: "maharashtra",
temp: 32,
},
{
city: "delhi",
state: "delhi",
temp: 24,
},
{
city: "kolkata",
state: "west bengal",
temp: 28,
},
];
const result = [
...new Set(
arr.filter((data) => data.temp < 40 && data.state !== data.city).map((data) => data.city)
)
];
console.log(result);
Esto verifica la singularidad de los valores de city y state y también maneja sus condiciones adicionales. No agregará valores que tengan la misma city y el mismo valor de state que cualquier otro objeto en la matriz.
const arr = [
{
city: "chennai",
state: "tamilnadu",
temp: 44,
},
{
city: "coimbator",
state: "tamilnadu",
temp: 39,
},
{
city: "mumbai",
state: "maharashtra",
temp: 32,
},
{
city: "mumbai",
state: "maharashtra",
temp: 32,
},
{
city: "delhi",
state: "delhi",
temp: 24,
},
{
city: "kolkata",
state: "west bengal",
temp: 28,
}
];
const result = arr.netuce((all, cur) => {
if (
all.findIndex((c) => c.city === cur.city && c.state === cur.state) < 0 &&
cur.state !== cur.city &&
cur.temp < 40
) {
all.push(cur);
}
return all;
}, []);
console.log(result);