Javascript-使用for循环来构建'associative'数组

时间:2013-09-04 21:06:34

标签: javascript arrays associative-array

我正在尝试使用

构建一个数组userRow {}
$('#divResults tr').find('td:nth-child(2)').text();

将返回12个名字,从html表格列Ex中获取。约翰,戴夫,等等。

$('#divResults tr').find('td:nth-child(3)').text();

返回中间名,等等。

我尝试了什么:

            for ( var i=0; i < 12; i++) {

            userRow[i]['jurorFN'] = $('#divResults tr').find('td:nth-child(2)').text();
            userRow[i]['jurorMN'] = $('#divResults tr').find('td:nth-child(3)').text();
            userRow[i]['jurorLN'] = $('#divResults tr').find('td:nth-child(4)').text();
        }

这不会是console.log的任何内容

我希望它能循环桌面上的所有项目,如果我提醒userRow [1]它会输出Dave,M,Johnson(第一个中间最后一个)等等

3 个答案:

答案 0 :(得分:2)

您需要遍历每个$('#divResults tr')

var userRow = [];
$('#divResults tr').each(function(i) {
    var tds = $(this).find('td');
    userRow[i] = {}
    userRow[i].jurorFN = tds.eq(2).text();
    userRow[i].jurorMN = tds.eq(3).text();
    userRow[i].jurorLN = tds.eq(4).text();
});

否则,您所做的只是将第一行复制到数组中12次


map

var userRow = $('#divResults tr').map(function() {
    var tds = $(this).find('td');
    return {
        jurorFN: tds.eq(2).text(),
        jurorMN: tds.eq(3).text(),
        jurorLN: tds.eq(4).text()
    };
}).get();

我做的其他外观变化:

  • .find('e:nth-child(n)')替换为.find('e').eq(n),因为这样可以计算find('e')一次并重复使用
  • obj['validIdentifier']替换为obj.validIdentifier

答案 1 :(得分:0)

在js中没有类似关联数组的东西,只有以数组样式访问的对象。我认为您应该在将日期添加到userRow[i] = {}

之前定义对象

剩下的代码对我来说还不清楚......

答案 2 :(得分:0)

仅仅依靠您提供的代码,请试一试:

var userRow = [];
for ( var i=0; i < 12; i++) {
  var jurorFN = $('#divResults tr').find('td:nth-child(2)').text();
  var jurorMN = $('#divResults tr').find('td:nth-child(3)').text();
  var jurorLN = $('#divResults tr').find('td:nth-child(4)').text();
  var fullName = jurorFN + ' ' + jurorMN + ' ' + jurorLN;
  userRow.push(fullName);
}
console.log(userRow[0]); // up to userRow[11]