Javascript-使用for loop来构建“关联”数组

Javascript- using for loop to build 'associative' array

本文关键字:关联 数组 构建 使用 for loop Javascript-      更新时间:2023-09-26

我正在尝试使用

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

这将返回 12 个名字,从 html 表列中抓取 例如约翰、戴夫等。

$('#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();
        }

这不会安慰.log任何东西

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

您需要遍历每个$('#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

在js中没有像关联数组这样的东西,只有以数组样式访问的对象。我认为你应该在输入一些日期之前定义对象:userRow[i] = {}

其余代码对我来说不清楚...

只是纯粹使用您提供的代码,试一试:

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]