在 For 循环中创建键值对数组
2020-01-30
855
我从我的 ajax 获得了此响应
这是我的
configs.objects
configs.objects = ['Mexico','Brazil','Spain','Italy','USA'];
(7) [19, 51, 40, 69, 15, 77, 40]
我创建了一个 for 循环
var datasets = [];
for (i = 0; i < configs.objects.length; i++) {
console.log(i);
datasets[i]['borderWidth'] = 1;
datasets[i]['hoverBorderWidth'] = 2;
datasets[i]['hoverBorderColor'] = '#fff';
datasets[i]['data'] = response[i];
datasets[i]['label'] = configs.objects[i];
// debugger;
}
console.log(datasets);
我一直得到
Uncaught TypeError: Cannot set property 'borderWidth' of undefined
为什么?我做错什么了吗?过去 2 个小时里我一直盯着这些代码。
我不知道为什么我总是收到这个错误。
3个回答
datasets
是一个空数组,没有任何元素,您永远不会添加任何元素。只需确保第
i
个元素首先初始化为对象即可:
datasets[i] = {};
您还可以稍微重构一下代码,改为将
push
对象文字推送到
datasets
,以获得相同的结果:
datasets.push({
borderWidth: 1,
hoverBorderWidth: 2,
hoverBorderColor: #fff,
data: response[i],
label: configs.objects[i]
});
apsillers
2020-01-30
var datasets = [];
for (i = 0; i < configs.objects.length; i++) {
let obj = {}
obj['borderWidth'] = 1;
obj['hoverBorderWidth'] = 2;
obj['hoverBorderColor'] = '#fff';
obj['data'] = response[i];
obj['label'] = configs.objects[i];
datasets[i] = obj;
// debugger;
}
xana
2020-01-30
在设置值之前,需要先将其初始化为一个对象:
datasets[i] = {};
datasets[i]['key'] = 'value';
进一步阅读: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer
Jeremy Harris
2020-01-30