我有一个像这样的数组
arr1 = ["P2.13","P1.13","P4.13","P3.13", "P2.14","P2.14","P1.14","P4.14","P1.15","P2.15","P3.15","P4.15"];
如何按照FIRST之后的数字从13到15对数组进行排序,然后按" P"之后的数字排序。从1到4?最后我想要一个像这样的数组
arr2 = ["P1.13","P2.13","P3.13","P4.13","P1.14","P2.14","P3.14","P4.14","P1.15","P2.15","P3.15","P4.15"];
欣赏!!
答案 0 :(得分:1)
将函数传递给arr1.sort(function(a, b) {
return a.slice(-2) - b.slice(-2) || a[1] - b[1];
});
。以下内容适用于所提供的精确测试用例,但如果输入更为通用,则需要进行修改。
arr1
请注意,这将 mutate @ApplicationPath("api")
public class MyResourceConfig extends ResourceConfig {
。
答案 1 :(得分:0)
对于包含许多函数式编程的程序,我选择了Underscore库。 您可以通过加入它们来基于多个属性直接调用sortBy函数和hacky技巧。这是代码:
var sortedArray = _.sortBy(arr1, function(item) {
var nums = item.split('.');
return [nums[1], nums[0]].join("_");
});
但是,您仍然可以使用Javascript排序功能对自定义比较功能的列表进行排序。这是代码:
arr1.sort(function(x, y) {
var numsX = x.split('.');
var numsY = y.split('.');
if (numsX[1] !== numsY[1]) {
return compare(numsX[1], numsY[1]); // compare the number after dot first
}
return compare(numsX[0], numsY[0]); // compare the number before dot after
});
// General comparison function for convenience
function compare(x, y) {
if (x === y) {
return 0;
}
return x > y ? 1 : -1;
}
检查小提琴上的两个例子 Underscore sort vs Javscript sort
这是我的新帐户,我不具备发布2个以上链接的声誉。您可以搜索下划线库。
感谢。