我有一个包含<tr>
和<td>
的字符串。我想将数据从<td>
拆分为数组。这就是:
<tr>
<td>Test</td>
<td>Hey</td>
</tr>
<tr>
<td>Test2</td>
<td>Hey2</td>
</tr>
变为:
array[0] = { test, hey }
array[1] = { test2, hey2 }
答案 0 :(得分:3)
var originalString = "<tr><td>Test</td><td>Hey</td></tr><tr><td>Test2</td><td>Hey2</td></tr>";
var targetArray = [];
$(originalString) /*.find("tr")*/ .each(function(index, tr) {
targetArray[index] = $("td", tr).map(function(index, td) {return $(td).text();});
});
答案 1 :(得分:1)
jQuery的?为了什么?
var array = [];
var strArray = "Test Hey Test2 Hey2".split(" ");
for (int i = 0; i < strArray.length; i += 2) {
array[i] = [strArray[i], strArray[i + 1]];
}
var array = new Array();
$("tr").each(function() {
array.push([ $(this).find("td:eq(1)").text(), $(this).find("td:eq(2)").text() ]);
});
答案 2 :(得分:1)
编辑:以下是一个更短的JQuery版本(我在jQuery 1.4.2上测试):
function split(s) {
return $.map(s.split('<tr>').slice(1), function(i) {
return [$.map(i.split('<td>').slice(1), function(i) {
return i.split('</td>')[0]
})]
})
}
var L = split('<tr><td>Test</td><td>Hey</td><tr><td>Test2</td><td>Hey2</td></tr>');
这是以前的原始JavaScript版本,它仍然可能比上面更快:
function split(s) {
var L = s.split('<tr>');
var rtn = [];
for (var x=1; x<L.length; x++) {
var iL = L[x].split('<td>')
iRtn = []
for (var y=1; y<iL.length; y++) {
iRtn.push(iL[y].split('</td>')[0]);
}
rtn.push(iRtn)
}
return rtn;
}
var L = split('<tr><td>Test</td><td>Hey</td><tr><td>Test2</td><td>Hey2</td></tr>');
我已经测试过它可以处理带有表格的基本字符串,但是它不会影响它,例如
等,它显然不会处理嵌套表。应该只使用字符串拆分方法更快,但我确信使用JQuery $(x).map
可以缩短它。它还要求表<tr>
和<td>
在写入时小写。