首页 > 解决方案 > JavaScript 对象推送到数组但无法正常工作

问题描述

我正在运行一个函数,该函数需要从 API 获取数据并将其推送到一个数组中,该数组在单元循环中使用

     var newArray = [];
        units.forEach((value) => {
            var discount = [];
            axios.get(baseApi() + `GetAllDiscounts?intUnitTypeId=${value.UnitTypeId}`, {
                headers: { 'Content-Type': 'application/xml; charset=utf-8', 'Access-Control-Allow-Origin': '*' }
            }).then(response => {
                parseString(response.data, function (err, result) {
                    result.SSM.Record.forEach(function (content) {
                        if (content.DonotDisplay[0] === "False") {
                            discount.push({
                                discount_id: content.DISCOUNTID[0],
                                description: content.DISCOUNTNAME[0],
                                amount: content.Value[0],
                                typeText: content.CUSTOMERTYPE[0],
                                type: content.Type[0]
                            })
                        }
                    })
                })
            }).catch(error => { console.log(error) })


            console.log(discount)
            newArray.push({
                "ApproximateSize": value.ApproximateSize,
                "Breadth": value.Breadth,
                "CategoryName": value.CategoryName,
                "Discount": value.Discount,
                "InternetPrice": Math.round(value.InternetPrice),
                "InternetPriceAvailable": value.InternetPriceAvailable,
                "IsAvailable": value.IsAvailable,
                "Length": value.Length,
                "Rent": Math.round(value.Rent),
                "UnitTypeCode": value.UnitTypeCode,
                "UnitTypeDescription": value.UnitTypeDescription,
                "UnitTypeDetailedDescription": value.UnitTypeDetailedDescription,
                "UnitTypeId": value.UnitTypeId,
                // "discount_id": discount[0].discount_id,
                // "description": discount[0].description,
                // "amount": discount[0].amount,
                // "type": discount[0].type,
            })
        });

折扣数组的结果是 [] 但是当我打开数组时它包含一个对象我也检查长度它显示 0 但它包含一个数组。

注意:我需要每个单元的 api 信号对象

我做错了什么? 在此处输入图像描述

标签: javascriptnode.jsaxios

解决方案


很难说出你在问什么。但是,更好的调试可能会帮助您了解发生了什么。以下是一些提示:

  • 当你 console.log 一个数组时,控制台只显示对该数组的引用,所以如果它被修改,控制台也会更新。如果您想查看它在某个时间点的样子,一个技巧是将其转换为 json 并返回console.log(JSON.parse(JSON.stringify(discount)))
  • 如果您想在某个时间点检查多个变量以查看发生了什么,您可以设置断点或放入debugger;代码以激活 chrome 的调试器。
  • 逐步检查您的代码并在每个阶段添加控制台日志,以验证数据是否符合您的预期。

推荐阅读