我在使用FOR向对象中输入数据时遇到问题



我有一个要使用FOR循环遍历的对象因为我想根据我的需要更改对象

这是我的原始对象

我从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', …}
]

现在我要做的是检查我在ORDER中是否有未定义的您可以看到,在第一行中,它被设置在第二个no中,如果没有,则取第二行SKU中的值,并将其插入阵列的前一个位置我会附上我写的代码

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)

所发生的只是成功的第一行但在第三次迭代中,应该进入第二行,但它没有成功。我得到了一个错误

"TypeError:无法读取未定义的属性(读取"SKU")">

奇怪的是,他在第一行就成功了这里是console.log()中的代码

我打开了第一行,这样你就可以看到他输入下一行值的SKU

(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: 4

我也一步一步地跟着任何集成


have  0
1 'dont have'
have  2
3 'dont have'
err 3
have  4
5 'dont have'
err 5
have  6

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.

希望这就是你想要做的,你可以尝试这样做,也许会有更好的解决方案。

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);

使用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)

最新更新