JavaScript 2D阵列和嵌套循环的麻烦

发布于 2025-01-23 20:29:17 字数 1789 浏览 4 评论 0原文

您能解释一下我缺少的东西吗?以及我可以做的解决方案。 我正在收到错误:typeError:在尝试将数据添加到此2D数组时,无法设置未定义(设置'0')的属性。

        wixData.query("paidLineItems").eq("paidOrderId", orderNumber).find().then((result)=>{

        let nbrRecs = result.totalCount
        let newOrder = [];

        matrix = new Array(nbrRecs).fill(0).map(() => new Array(8).fill(0));
        for (var i = 0; i < nbrRecs; i++) {
            let lineItem = result.items[i];
            if (result.items[i].prodQty > 1) {
                let qty = result.items[i].prodQty
                while (multipleLineCtr < qty) {
                        matrix[multipleLineCtr][0] = lineItem.email
                        matrix[multipleLineCtr][1] = lineItem.prodName
                        matrix[multipleLineCtr][2] = lineItem.prodQty
                        matrix[multipleLineCtr][3] = multipleLineCtr
                        matrix[multipleLineCtr][4] = "Jesus"
                        matrix[multipleLineCtr][5] = lineItem.paidOrderId
                        matrix[multipleLineCtr][6] = lineItem.purchaseDt
                        matrix[multipleLineCtr][7] = lineItem.dtSupportEnds
                        multipleLineCtr++;
                }
            }else {
                matrix[cnt][0] = lineItem.email
                matrix[cnt][1] = lineItem.prodName
                matrix[cnt][2] = lineItem.prodQty
                matrix[cnt][3] = 1
                matrix[cnt][4] = "Jesus"
                matrix[cnt][5] = lineItem.paidOrderId
                matrix[cnt][6] = lineItem.purchaseDt
                matrix[cnt][7] = lineItem.dtSupportEnds
                cnt++;
            }
        }
    })
    .catch((error) => {
        console.log(error);
    }); 
});

Will you please explain what I'm missing? And possibly what I can do to fix it.
I'm receiving the error: TypeError: Cannot set properties of undefined (setting '0') while trying to add data to this 2D array.

        wixData.query("paidLineItems").eq("paidOrderId", orderNumber).find().then((result)=>{

        let nbrRecs = result.totalCount
        let newOrder = [];

        matrix = new Array(nbrRecs).fill(0).map(() => new Array(8).fill(0));
        for (var i = 0; i < nbrRecs; i++) {
            let lineItem = result.items[i];
            if (result.items[i].prodQty > 1) {
                let qty = result.items[i].prodQty
                while (multipleLineCtr < qty) {
                        matrix[multipleLineCtr][0] = lineItem.email
                        matrix[multipleLineCtr][1] = lineItem.prodName
                        matrix[multipleLineCtr][2] = lineItem.prodQty
                        matrix[multipleLineCtr][3] = multipleLineCtr
                        matrix[multipleLineCtr][4] = "Jesus"
                        matrix[multipleLineCtr][5] = lineItem.paidOrderId
                        matrix[multipleLineCtr][6] = lineItem.purchaseDt
                        matrix[multipleLineCtr][7] = lineItem.dtSupportEnds
                        multipleLineCtr++;
                }
            }else {
                matrix[cnt][0] = lineItem.email
                matrix[cnt][1] = lineItem.prodName
                matrix[cnt][2] = lineItem.prodQty
                matrix[cnt][3] = 1
                matrix[cnt][4] = "Jesus"
                matrix[cnt][5] = lineItem.paidOrderId
                matrix[cnt][6] = lineItem.purchaseDt
                matrix[cnt][7] = lineItem.dtSupportEnds
                cnt++;
            }
        }
    })
    .catch((error) => {
        console.log(error);
    }); 
});

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

故笙诉离歌 2025-01-30 20:29:17

您应该检查矩阵[index]是一个数组,如果是,则应在matrix [index]上创建一个数组。

matrix[multipleLineCtr] ||= [];

或传统方式:

if (!Array.isArray(matrix[index])) {
    matrix[index] = [];
}

You should check if the matrix[index] is an array or not, and if it is, you should create an array at matrix[index].

matrix[multipleLineCtr] ||= [];

or the traditional way:

if (!Array.isArray(matrix[index])) {
    matrix[index] = [];
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文