【发布时间】:2017-06-01 18:16:48
【问题描述】:
我有一个很好的 hotdealArray 对象:
[
{
"_id": "5908906b53075425aea0b16d",
"property": "ATL-D406",
"discount": 10,
"hot": true
},
{
"_id": "5908906b53075425aea0b16f",
"property": "WAT-806",
"discount": 20,
"hot": true
},
{
"_id": "5908906b53075425aea0b171",
"property": "ANA-C202",
"discount": 30,
"hot": true
}
]
我试试这个
hotdealArray[i].priceNight = result.res.priceNight;
这会给出错误:无法设置未定义的属性“priceNight”
如何向 hotdealArray 添加新字段?
这是我要求的 for 循环:
for (var i=0; i<hotdealArray.length; i++) {
var priceNight = 0;
priceController.getPrice (
{ "body": { "propertyID": hotdealArray[i].property } },
function(result) {
if (result.error == true) {
throw new Error(result.err);
}
priceNight = result.res.priceNight;
console.log ("priceNight inside: " + priceNight);
}
);
console.log ("priceNight outside: " + priceNight);
hotdealArray[i].priceNight = priceNight;
};
在控制台日志中,它只显示:
priceNight inside: 2160
priceNight inside: 2250
priceNight inside: 4455
priceNight inside: 1485
【问题讨论】:
-
您需要提供更多上下文。
hotdealArray不是您在参考时发布的数组,或者i不是 0、1 或 2。如果没有更多代码,我们将无法调试。 -
@ArnavAggarwal 如果您执行
console.log(hotdealArray[i].property),那么您将获得一个值。它已经有值了,我只需要在每条记录中添加一个新的priceNightfield。 -
请添加您用来循环数组的代码
-
与大多数此类问题一样,最好提供minimal reproducible example,我们可以在其中查看运行中的代码并演示问题。正如@Lixus 所展示的那样,带有您提供的代码的 MCVE 并不能说明问题。
-
哦,这是一个范围错误。这改变了一切。
标签: javascript arrays json