Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery:Splitfrom_Javascript_Jquery - Fatal编程技术网

Javascript jQuery:Splitfrom

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

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