如何在JavaScript中创建动态数组元素名,在for循环中
How to create dynamic array element names in JavaScript, inside a for loop?
我在JS片段中有一个for循环,我想根据字符串和当前迭代数动态生成数组成员的名称。基本上我写的是这样的:
product_data[i] = {
"ch-" + i: '1',
'product' + i: jsondata[products][i].product_description,
'quantity' + i: jsondata[products][i].quantity,
'price' + i: jsondata[products][i].unit_price,
'rem' + i: '',
'fpa' + i: jsondata[products][i].vat
};
然而,根本不起作用。我也用过eval()
,但运气不好。什么好主意吗?
如果您的环境支持,您可以在对象初始化器中使用新的ECMAScript表示法来表示计算的属性名:
var product_data = new Array(2);
for (var i = 0; i < 2; i++) {
product_data[i] = {
["ch-" + i]: i,
};
}
console.log(product_data);
否则,你可以使用好的大括号符号,像这样:
var product_data = new Array(2);
for (var i = 0; i < 2; i++) {
product_data[i] = {};
product_data[i]["ch-" + i] = i;
}
console.log(product_data);
此功能自ES6以来就存在。你可以这样使用:
var obj = {
[myKey]: value,
}
所以你的例子变成了:
product_data[i] = {
["ch-" + i]: '1',
['product' + i]: jsondata[products][i].product_description,
['quantity' + i]: jsondata[products][i].quantity,
['price' + i]: jsondata[products][i].unit_price,
['rem' + i]: '',
['fpa' + i]: jsondata[products][i].vat
};
如果你不想使用EcmaScript 6,你必须将你的对象初始化为一个空对象,然后添加属性给它:
product_data[i] = {};
product_data[i]["ch-" + i] = '1'
...
你可以这样做
product_data[i] = {};
product_data[i]["ch-"+i] = '1';
product_data[i]["product"+i] = jsondata[products][i].product_description;
...
等等……
相关文章:
- 为什么JavaScript在for循环为3时向所有4发出警报
- 另一个ajax调用中的Jquery ajax调用在for循环中没有按预期工作
- 我的javascript for循环不起作用
- For循环冻结Javascript
- 如何在for循环中添加事件侦听器
- 双“for”循环(循环)
- javascript for循环不起作用
- for循环中的javascript if语句找不到==
- Javascript在for循环中等待处理请求
- For循环在Jquery中只运行一次
- 如何在for循环中使用计数器
- for循环中的JavaScript闭包
- 为什么我们在ES2015中需要一个新的for循环结构,而我们已经有了for、forEach
- For循环在调用时未运行
- 如何使用for循环添加所有按钮'单击事件
- 如何更改在for循环中生成的圆的位置
- 为什么这个For循环会使浏览器实验室崩溃
- 为什么我使用javascript获得了一个无限的for循环
- 在for循环中使用多维数组设置google.maps.Marker图标
- 如何在angularJS中运行for循环而不使用html标记