【发布时间】:2014-05-19 11:49:05
【问题描述】:
我正在使用以下代码创建一个数组。
到目前为止,单个函数工作正常,我对循环的唯一问题是如何从数组中的每个项目动态创建变量(nameX 和 dataX)。
示例:
我的数组是[item1,item2,item3]。在这种情况下,变量应该是 name1、data1、name2、data2、name3、data3(nameX 和 dataX 暂时只是占位符)。
我的代码:
//get unique items
var inputSearch = new Array();
$('td.searchTerm').each(function() {
if( ($(this).text() != '') && ($(this).text() != ' ') ) {
if(inputSearch.indexOf($(this).text()) == -1) {
inputSearch.push( $(this).text() );
}
}
});
//loop through array to get volumes per item
var i;
for (i = 0; i < inputSearch.length; i++) {
var nameX = inputSearch[i].replace(/\s+/g, '');
var dataX = [];
var xSum = 0;
$('#myTable tbody tr').each(function() {
if ($(this).find('td:contains(' + nameX + ')').length === 0) {
dataX.push(0);
} else {
xSum = 0;
$(this).find('td:contains(' + nameX + ')').each(function() {
xSum += parseInt($(this).next('td').text());
});
dataX.push(xSum);
}
});
}
更新:我找到了一种动态创建名称变量的方法,所以现在只缺少数据变量:
window['name' + i.toString()] = inputSearch[i].replace(/\s+/g, '');
非常感谢您提供的任何帮助,蒂姆。
【问题讨论】:
-
"在这种情况下,变量应该是 name1, data1, name2, data2, name3, data3" - 你绝对不希望这样。
-
不管怎么称呼它们,但它们需要命名不同,以免相互覆盖。
-
你还是不想这样。您永远不想使用任何类型的编号变量,尤其是数量不定的变量。这就是数组的用途。
-
请添加您想要“编号”变量的目的,所以也许我们可以使用数组帮助解决它。数组本质上就是这样,编号的变量,只是它们的名字是数组[x]
-
我需要两件事:唯一项目列表(当前是我的第一个数组)+ 这些项目旁边的值列表(当前是我的第二个数组)。这两个都需要作为单独的列表,而不是组合在一起。