我正在尝试将<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();
答案 0 :(得分:2)
使用地图可能有一些奇特的方式,但我更喜欢通过each
循环,因为它更容易理解和维护。
var resultArray = [];
$(".sort tr").not(":first-child").each(function () {
var innerArray = [];
$(this).find('td').each(function () {
innerArray.push($(this).text());
});
resultArray.push(innerArray);
});
答案 1 :(得分:0)
试试这个:
var outerArray = new Array() ;
$('.sort').children('tr').each(function(i,elem) {
outerArray.push(elem.children('td')) ;
});