jQuery:从中拆分

时间:2010-05-27 12:59:10

标签: javascript jquery

我有一个包含<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 }

3 个答案:

答案 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>');

我已经测试过它可以处理带有表格的基本字符串,但是它不会影响它,例如&nbsp;等,它显然不会处理嵌套表。应该只使用字符串拆分方法更快,但我确信使用JQuery $(x).map可以缩短它。它还要求表<tr><td>在写入时小写。