2

我试图将文本从 a<table>放入一个数组中,作为一个文本数组。

示例 HTML:

<table class="sort">
    <caption>Census Data</caption>
    <tr>
        <th class="alpha">First Name:</th>
        <th class="alpha">Last Name:</th>
        <th class="date">Date of Birth:</th>
        <th class="numeric">Age:</th>
        <th class="alpha">Gender:</th>
    </tr>
    <tr>
        <td>Peter</td>
        <td>Parker</td>
        <td>12/23/1975</td>
        <td>36</td>
        <td>Male</td>
    </tr>
    <tr>
        <td>John</td>
        <td>Doe</td>
        <td>06/09/1982</td>
        <td>30</td>
        <td>Male</td>
    </tr>
</table>

最终目标是拥有这样的数组:

var array = [
             ["Peter", "Parker", "12/23/1975", "36", "male"], 
             ["John", "Doe", "06/09/1982", "30", "male"]
            ];

这就是我目前所拥有的,我的问题似乎与我的内部返回在到达外部地图时实际上不是一个数组有关。当我alert(innerArray.toString());给我逗号分隔的字符串时,就好像它是内部的字符串,但在外部,它似乎join将数组合二为一,而不是使其成为多维的。

var outerArray = $(".sort tr").not(":first-child").map(function(){
    var innerArray = $(this).children().map(function(){
       return $(this).text();
    }).toArray();           
    return innerArray;
}).toArray();
4

2 回答 2

2

使用 map 可能有一些花哨的方法,但我更喜欢循环,each因为它更容易理解和维护。

var resultArray = [];

$(".sort tr").not(":first-child").each(function () {
    var innerArray = [];

    $(this).find('td').each(function () {
        innerArray.push($(this).text());
    });

    resultArray.push(innerArray);
});

工作示例

于 2013-02-28T17:29:48.010 回答
0

试试这个 :

var outerArray = new Array() ;

$('.sort').children('tr').each(function(i,elem) {
     outerArray.push(elem.children('td')) ;
});
于 2013-02-28T17:14:17.670 回答