我有一个像这样的字符串:
var allString = "|AQW12|2|34|33|12|<br>|AQW11|2|34|33|12|<br>|AQW09|2|34|33|12|<br>";
基本上,这是某种表,其中的列名将用
|
分隔,而<br>
分隔行。我的问题是您将如何按第2列(即AQW12,AQW11等)对allString进行排序。
谢谢
最佳答案
快速解决方案,请改换不好的变量名:
var allString = "|AQW12|2|34|33|12|<br>|AQW11|2|34|33|12|<br>|AQW09|2|34|33|12|<br>";
var l1 = allString.split("<br>");
var l2 = l1.map( function(elem) { return elem.split("|"); } )
var l3 = l2.sort( function(a,b) { return a[1].localeCompare(b[1]); } )
var l4 = l3.map( function(elem) { return elem.join("|"); } );
var output = l4.join("<br>");
console.log(allString);
console.log(output);
输出:
|AQW12|2|34|33|12|<br>|AQW11|2|34|33|12|<br>|AQW09|2|34|33|12|<br>
|AQW09|2|34|33|12|<br>|AQW11|2|34|33|12|<br>|AQW12|2|34|33|12|<br>
变量
l3
包含数组形式的数据:[ [ 'AQW09', '2', '34', '33', '12' ],
[ 'AQW11', '2', '34', '33', '12' ],
[ 'AQW12', '2', '34', '33', '12' ] ]
有关
localCompare
的评论,请参考https://stackoverflow.com/a/2167619/1689451当然,如果您想炫耀,也可以使用方法链接:)
var output = allString.split("<br>")
.map( function(elem) { return elem.split("|"); } )
.sort( function(a,b) { return a[1].localeCompare(b[1]); } )
.map( function(elem) { return elem.join("|"); } )
.join("<br>");