我需要从JavaScript中的n
数组列表中找出最小的数组。什么是最好的算法?
var a = [1, 3, 2, 5, 3, 7, 3, 5, 9, 0],
b = [2, 4, 7, 5, 1, 2, 8],
c = [5, 3, 7, 6];
function doSomething() {
// arguments
}
此处的结果应为c
。那是[5, 3, 7, 6]
注意:未定义数组的数量,使用fn.call
传递给函数的数组可能有10或100个
答案 0 :(得分:1)
使用以下实现可以解决问题。
function doSomething(){
var Result = a;
if ( b.length < Result.length )
Result = b;
if ( c.length < Result.length )
Result = c;
return Result;
}
答案 1 :(得分:1)
var arrays = [
[1, 3, 2, 5, 3, 7, 3, 5, 9, 0],
[2, 4, 7, 5, 1, 2, 8],
[5, 3, 7, 6],
]
function smallestArray(arrays) {
var min = Number.POSITIVE_INFINITY;
var smallest;
for(var l = arrays.length-1; l >= 0; l--) {
var length = arrays[l].length;
if (length < min) {
min = length;
smallest = arrays[l];
}
}
return smallest;
}
smallestArray(arrays)
答案 2 :(得分:0)
// Put them in an array
var arr = [a,b,c];
// Sort it
arr.sort(function (list1,list2){
// compare lists by lengths
return list1.length - list2.length;
});
// take the first one.
var shortest = arr[0];