我有四个数组A,B.C和D.例如:
length of A is 1
length of b is 4
length of C is 1
length of D is 2.
var a = [1];
var b = [2,3,4,5];
var c = [6];
var d = [7,8];
我想根据较大的数组长度连接这四个数组,因此数组将按顺序排列:b
,d
,a
,c
:
预期结果:
[2,3,4,5,7,8,1,6]
[2,3,4,5,1,6,7,8] //also valid, a and c are same length, so can be sorted this way too.
如何在JavaScript中找到较大到较低的数组并将它们从大到小连接起来?
答案 0 :(得分:5)
使用sort
和concat
:
Array.prototype.concat.apply([], [a, b, c, d].sort(function (a, b) {
return b.length - a.length;
}));
Array.prototype.concat.apply
用于将子数组连接在一起。
答案 1 :(得分:4)
你可以用underscore完全清楚地做到这一点:
_.sortBy([a,b,c,d], function(num) {
return num.length;
}).reverse().join(',').split(',');
答案 2 :(得分:2)
我的更详细,但似乎仍然有效;所有前3个答案中的想法是将数组放入一个额外的数组中,然后根据数组的长度自定义数组。一个好的,有点过时的参考文献是:http://www.javascriptkit.com/javatutors/arraysort.shtml
var arrays = [a, b, c, d];
var concatentation = [];
arrays.sort(function(x, y) {
return y.length - x.length;
});
for (var i=0, n=arrays.length; i<n; i++) {
concatentation = concatentation.concat(arrays[i]);
}
console.log(concatentation); //[2, 3, 4, 5, 7, 8, 1, 6]