He creado una variable externa para obtener valores desde adentro, pero solo obtengo el último valor en ambas variables.
var categoryProductid; var PPProducttitle; for (var key in UpdatedCategory) { const actual = UpdatedCategory[key] var categoryProductid = actual.id; var PPProducttitle = actual.title; console.log(PPProducttitle) console.log(categoryProductid) } console.log(PPProducttitle) console.log(categoryProductid)cuando hago console.logs() desde dentro y fuera del bucle for obtengo dos valores diferentes.
Cualquier ayuda será apreciada gracias!!!!!
Voy a suponer que UpdatedCategory es un objeto (si es una matriz, vea mi respuesta aquí para saber qué usar en lugar de for-in para recorrerlo).
El problema básico con ese código es que estás asignando la misma variable una y otra vez. La razón por la que es la misma variable es que var no tiene alcance de bloque, por lo que la parte var de var categoryProductid = actual.id; se ignora por completo (y similar para var PPProducttitle = actual.title; ). En su lugar, está reutilizando las variables que declaró antes del ciclo for .
Una variable solo puede contener un valor, por lo que cuando le asigna un nuevo valor, ya no tiene el valor anterior.
Si desea contener varios valores con una variable, puede asignarle un contenedor que pueda contener varios valores, como una matriz, un objeto, un Map o un Set .
No ha dicho qué resultado final desea, pero aquí hay un ejemplo que crea dos matrices y las llena con la id y el title de los productos de UpdatedCategory :
// Again, I'm assuming `UpdatedCategory` is an object: const UpdatedCategory = { a: { id: 1, title: "a", }, b: { id: 2, title: "b", }, c: { id: 3, title: "c", }, }; // `[]` creates a new empty array. // We can use `const` to declare these because we never change their // value (they only ever refer to a single array), but you could use // `let` if you preferred. Don't use `var` in new code, it's deprecated. // Note: I've renamed these slightly to: // 1. Stick to standard naming conventions // * Initial capitals are used primarily for constructor functions // * Variables referring to arrays are generally plurals // 2. Be consistent in capitalization const categoryProductIds = []; const ppProductTitles = []; for (var key in UpdatedCategory) { // Get this property value const actual = UpdatedCategory[key]; // Push the `id` and `title` into the relevant arrays categoryProductIds.push(actual.id); ppProductTitles.push(actual.title); } // Show the contents of the arrays console.log(ppProductTitles); console.log(categoryProductIds);