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

标签 javascript arrays associative-array

我正在尝试使用构建一个数组 userRow{}

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

它不会console.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

关于Javascript-使用for循环构建 'associative'数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623781/

相关文章:

javascript - 如何在jquery中为动态数据创建函数

php - 多维混合关联/数字数组移位

javascript - 统计空文件上传控件

php - 检查数组是否在数据库中有 ID 做更新否则做插入

c++ - 指向数组重叠数组末端的指针

php - 无法将数组从 Php/MySQL 查询传递到 SwiftMailer

php - 删除关联数组的一部分

php - 根据相同的键连接数组值

javascript - 在 NodeJS 中复制缓冲区的问题

javascript - React - 刷新页面后不显示所选值