Javascript jQuery:Splitfrom
我有一个包含s和s的字符串。我想将s中的数据拆分为一个数组。因此:Javascript jQuery:Splitfrom,javascript,jquery,Javascript,Jquery,我有一个包含s和s的字符串。我想将s中的数据拆分为一个数组。因此: <tr> <td>Test</td> <td>Hey</td> </tr> <tr> <td>Test2</td> <td>Hey2</td> </tr> jQuery?为什么 var array = []; var strArray = "Test Hey Test2 Hey
<tr>
<td>Test</td>
<td>Hey</td>
</tr>
<tr>
<td>Test2</td>
<td>Hey2</td>
</tr>
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]];
}
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]];
}
编辑:下面是我在JQuery 1.4.2上测试的以下JQuery版本的一个更短的JQuery版本:
这是以前的原始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可以缩短速度。它还要求表和在编写时使用小写字母。编辑:下面是我在JQuery 1.4.2上测试的一个更短的JQuery版本:
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();});
});
这是以前的原始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可以缩短速度。它还需要表,并且在编写时必须小写。它看起来非常整洁,应该是这样工作的,但它不会在我的Firebug控制台数组中用完,而是保持为空。谢谢,因为我没有测试它:-我正在删除findtr,因为$originalString已经是两个tr元素的集合。如果原始字符串包含更多内容(例如,整个table.Arg),则需要findtr。我认为jQuery的地图文档是错误的。它说jQuery.map数组,callbackelementOfArray,indexInArray但是回调函数的参数被交换了。这对我来说也不起作用。。。我在Chrome中得到了这个结果:对象0没有方法“text”。这是正确的答案,除了。text必须替换为。htmlIt看起来非常整洁,应该是这样工作的,但它不会在Firebug控制台数组中用完。保持为空。谢谢,因为我没有测试它:-我正在删除findtr,因为$originalString已经是两个tr元素的集合。如果原始字符串包含更多内容(例如,整个table.Arg),则需要findtr。我认为jQuery的地图文档是错误的。它说jQuery.map数组,callbackelementOfArray,indexInArray但是回调函数的参数被交换了。这对我来说也不起作用。。。我在Chrome中看到了这一点:对象0没有方法“text”。这是正确的答案,只是.text必须替换为.html
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();});
});