let newdata = wait tripModel.find(
{ tripId: ID },
{salesOrder:1, no: "$deliveryDetails.invoiceNo", _id: 0 }
);
let nullInvoices = [];
console.log("vvvvvvv", newdata[0].salesOrder);
for (let i = 0; i < newdata[0].no.length; i++) {
if (newdata[0].no[i] === null)
nullInvoices.push({
SO: newdata[0].salesOrder[i],
invoice: newdata[0].no[i],
});
}`
//error: vvvvvvv { salesOrder: [ 623d917d4c9f21730ace6256, 623da8bbeae48b2f34372a95, 623da8bbeae48b2f34372a92, 623d98964c9f21730ace642c ], no: [ null, '0900009293', '0900009294', null ] } reason TypeError: Cannot read properties of undefined (reading 'length')
I need to access "no", but it is throwing as undefined.
最佳答案
自从你
console.log("vvvvvvv", newdata[0].salesOrder);
语句返回
{
salesOrder: [ 623d917d4c9f21730ace6256, 623da8bbeae48b2f34372a95, 623da8bbeae48b2f34372a92, 623d98964c9f21730ace642c ],
no: [ null, '0900009293', '0900009294', null ],
}
您的迭代必须如下所示
let nullInvoices = [];
console.log("vvvvvvv", newdata[0].salesOrder);
for (let i = 0; i < newdata[0].salesOrder.no.length; i++) {
if (newdata[0].salesOrder.no[i] === null)
nullInvoices.push({
SO: newdata[0].salesOrder.salesOrder[i],
invoice: newdata[0].salesOrder.no[i],
});
}
示例实现
const newdata = [{}];
newdata[0].salesOrder = {
salesOrder: ['623d917d4c9f21730ace6256', '623da8bbeae48b2f34372a95', '623da8bbeae48b2f34372a92', '623d98964c9f21730ace642c'],
no: [null, '0900009293', '0900009294', null],
}
let nullInvoices = [];
for (let i = 0; i < newdata[0].salesOrder.no.length; i++) {
if (newdata[0].salesOrder.no[i] === null)
nullInvoices.push({
SO: newdata[0].salesOrder.salesOrder[i],
invoice: newdata[0].salesOrder.no[i],
});
}
console.log(nullInvoices);
关于javascript - 为什么在访问对象内的数组时出现未定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71672878/