不知道我在做什么错。基本上,我是从API检索信息。将JSON数据中的2个属性设置为名为“名称”和“利润”的数组。我想将它们组合起来,以便“名称”数组是对象中名为“ itemProfit”的“键”,而该键的值是利润数组。
示例:
name = ['item1'];
profit = [1000];
itemProfit = {item1: 1000};
我能够正确地将名称/利润数组输出到控制台,但是我的错误是在行上生成的:
itemProfit.name[i] = profit[i];
完整代码如下:
btn_top.addEventListener("click", function () {
fetch(url)
.then(function(response) {
return response.json();
})
.then(function(myJson) {
let name = [];
let profit = [];
Object.values(myJson).forEach(e=> {
name.push(e.name);
profit.push(e.sell_average - e.buy_average);
});
var itemProfit = {}
for (i=0; i<name.length; i++) {
itemProfit.name[i] = profit[i]; // where error occurs
};
// console.log(name);
// console.log(profit);
console.log(itemProfit);
});
});
错误消息:
main.js:52 Uncaught (in promise) TypeError: Cannot set property '0' of undefined
at main.js:52
任何帮助,谢谢您〜
答案 0 :(得分:2)
好吧,您的代码正在做的是尝试访问itemProfit.name [0]。 itemProfit没有属性名称,因此当您尝试访问未定义的[0]时,会出现该错误
itemProfit.name[i]
您真正想做的是:
itemProfit[name[i]] = profit[i]
通过这种方式,您将profit[i]
分配给itemProfit上与name[i]
对应的键