Contexto : estoy creando un objeto para establecer el color "rojo" en el último segmento en los gráficos de Google, sin embargo, sigo recibiendo objetos "apilados". Me gustaría eliminar los objetos anteriores y mantener solo el último objeto disponible.
Estaba tratando de hacer algo como esto:
let indices = indexSum; for (let i = 1; i <= slices.length; i++) { if (Object.keys(lossColor).length >= 2) { delete lossColor[i - 1]; } lossColor[i] = { color: "red" }; }Básicamente, tan pronto como la cantidad de objetos en mi objeto inicial sea 2, me gustaría eliminar el índice anterior (de ahí el i-1).
También estaba tratando de usar el operador de propagación (gracias a un usuario en SO que respondió a una de mis otras preguntas) para reemplazar los objetos existentes con el último objeto agregado.
Esta fue su implementación (sin embargo, sigo agregando todos los objetos sin eliminar los anteriores)
for (let i = 1; i <= indices; i++) { lossColor = { ...lossColor, [i]: { color: "red" } }; }Actualmente obtengo algo como esto si el usuario agrega 3 entradas:
{ "1": { "color": "red" }, "2": { "color": "red" }, "3": { "color": "red" } }El objetivo es tener algo como esto:
{ "3": { "color": "red" } }Donde básicamente se eliminan todos los demás objetos y solo se conserva el último
¿Hay una mejor manera de hacer esto? Gracias de antemano
Si siempre es el último, simplemente puede omitir el operador de propagación de la ecuación de esta manera,
var lossColor = []; for (let i = 1; i <= 3; i++) { lossColor = {[i]: { color: "red" } }; } console.log(lossColor);Un gran artículo sobre el operador de propagación si no está seguro de dónde usarlo: https://learnjsx.com/category/2/posts/es6-spreadOperator