Tengo un objeto por el que quiero pasar usando el bucle FOR Porque quiero cambiar el objeto de acuerdo con mis necesidades
Aquí está mi objeto original.
Lo copié de console.log()
(7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
[ {Order: 14, Address: 100101, SKU: 'CJNSXZHL', CJ Quantity: '1', Store: 'go', …} {SKU: 'CJNSX', CJ Quantity: '1', CJ Product Name: 'bbb', __rowNum__: 2} {Order: 15, Address: 100102, SKU: 'CJNSXZN', CJ Quantity: '1', Store: 'go', …} {SKU: 'CJNS', CJ Quantity: '1', CJ Product Name: 'ddd', __rowNum__: 4} {Order: 16, Address: 100103, SKU: 'CJNSX', CJ Quantity: '1', Store: 'go', …} {SKU: 'CJNS', CJ Quantity: '1', CJ Product Name: 'fff', __rowNum__: 6} {Order: 17, Address: 100104, SKU: 'CJNSTX', CJ Quantity: 2, Store: 'go', …} ]Ahora, lo que estoy tratando de hacer es verificar si, en cambio, yo en ORDEN tengo indefinido. Puede ver que en la primera fila está configurado en el segundo no y, si no, tome el valor que se encuentra en SKU en la segunda fila e insértelo en el lugar anterior de la matriz adjuntaré el código que escribí
const arr = []; for ( let i=0 ; i <= items.length-1;i++) { try { if (items[i].Order !== undefined){ console.log(" have ",i) arr.push({ "CJ Order Number":items[i].Order, "Address":items[i].Address, "SKU":[items[i].SKU], }); } else if (items[i].Order === undefined){ console.log("dont have ",i) arr[i-1].SKU.push(items[i].SKU) } }catch (err){ console.log("err",i) } } console.log(arr)Lo que sucede es que solo en la primera línea tiene éxito, pero en la tercera iteración se supone que debe ingresar a la segunda fila, no tiene éxito, aparece un error.
"Error de tipo: no se pueden leer las propiedades de undefined (leyendo 'SKU')"
Y lo extraño es que tiene éxito en la primera línea aquí El código de console.log()
Abrí la primera línea para que puedas ver el SKU que ingresó el valor de la siguiente línea
(4) [{…}, {…}, {…}, {…}] 0: Address: 100101 CJ Order Number: 14 SKU: (2) ['CJNSXZHL', 'CJNSX'] [[Prototype]]: Object 1: {CJ Order Number: 15, Address: 100102, SKU: Array(1)} 2: {CJ Order Number: 16, Address: 100103, SKU: Array(1)} 3: {CJ Order Number: 17, Address: 100104, SKU: Array(1)} length: 4También seguí paso a paso de cualquier integración
have 0 1 'dont have' have 2 3 'dont have' err 3 have 4 5 'dont have' err 5 have 6puedes hacerlo fácilmente con reduce
const data = [{ Order: 14, Address: 100101, SKU: 'CJNSXZHL', 'CJ Quantity': '1', Store: 'go' }, { SKU: 'CJNSX', 'CJ Quantity': '1', 'CJ Product Name': 'bbb', __rowNum__: 2 }, { Order: 15, Address: 100102, SKU: 'CJNSXZN', 'CJ Quantity': '1', Store: 'go' }, { SKU: 'CJNS', 'CJ Quantity': '1', 'CJ Product Name': 'ddd', __rowNum__: 4 }, { Order: 16, Address: 100103, SKU: 'CJNSX', 'CJ Quantity': '1', Store: 'go' }, { SKU: 'CJNS', 'CJ Quantity': '1', 'CJ Product Name': 'fff', __rowNum__: 6 }, { Order: 17, Address: 100104, SKU: 'CJNSTX', 'CJ Quantity': 2, Store: 'go' } ] const result = data.reduce((res, item) => { if (item.Order) { return [...res, {...item, SKU:[]}] } const lastOrder = res[res.length - 1] res[res.length - 1].SKU = [...(lastOrder.SKU || []), item] return res }, []) console.log(result)Con suerte, esto es lo que está tratando de hacer, podría intentar hacerlo de esta manera, aunque podría haber mejores soluciones.
const arr = []; const items = [ { Order: 14, Address: 100101, SKU: "CJNSXZHL", CJ_Quantity: "1", Store: "go", }, { SKU: "CJNSX", CJ_Quantity: "1", CJ_Product_Name: "bbb", __rowNum__: 2 }, { SKU: "CJNSXZN", Order: 15, Address: 100102, CJ_Quantity: "1", Store: "go", }, { SKU: "CJNS", CJ_Quantity: "1", CJ_Product_Name: "ddd", __rowNum__: 4 }, { Order: 16, Address: 100103, SKU: "CJNSX", CJ_Quantity: "1", Store: "go" }, { SKU: "CJNS", CJ_Quantity: "1", CJ_Product_Name: "fff", __rowNum__: 6 }, { Order: 17, Address: 100104, SKU: "CJNSTX", CJ_Quantity: 2, Store: "go" }, ]; for (let i = 0, j = 1; i <= items.length - 1; i++) { try { if (items[i].Order) { arr.push({ "CJ Order Number": items[i].Order, Address: items[i].Address, SKU: [items[i].SKU], }); } else { arr[j-1].SKU.push(items[i].SKU); j++; } } catch (err) { console.log("err", err); } } console.log(arr); let items = [{ Order: 14, Address: 100101, SKU: 'CJNSXZHL', 'CJ Quantity': '1', Store: 'go', }, { SKU: 'CJNSX', 'CJ Quantity': '1', 'CJ Product Name': 'bbb', __rowNum__: 2 }, { Order: 15, Address: 100102, SKU: 'CJNSXZN', 'CJ Quantity': '1', Store: 'go', }, { SKU: 'CJNS', 'CJ Quantity': '1', 'CJ Product Name': 'ddd', __rowNum__: 4 }, { Order: 16, Address: 100103, SKU: 'CJNSX', 'CJ Quantity': '1', Store: 'go' }, { SKU: 'CJNS', 'CJ Quantity': '1', 'CJ Product Name': 'fff', __rowNum__: 6 }, { Order: 17, Address: 100104, SKU: 'CJNSTX', 'CJ Quantity': 2, Store: 'go' }, ]; const arr = []; for (let i = 0; i <= items.length - 1; i++) { if (items[i].Order) { arr.push({ 'CJ Order Number': items[i].Order, Address: items[i].Address, SKU: [items[i].SKU], }); } else { arr[arr.length - 1].SKU.push(items[i].SKU); // the last element } } console.log(arr); Try this.