快速解决方案,请原谅错误的变量名:
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上的cmets,请参考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>");