查找数组中元素数量最多

时间:2015-08-20 13:40:30

标签: javascript arrays

我想找到最长的阵列并获得他的长度。

这是数组:

 [["667653905", "Johjn", "Smith"], ["500500500", "John", "Smith2", "Another field"], ["12342312", "asd", "asdasd", "fghfgh", "fghfgh"]]

目前我正在使用循环,但如果我有50k阵列,这是非常慢的解决方案:

for(var i = 0; i<explode.length; i++) {
        console.log(explode[i].length);
    }

3 个答案:

答案 0 :(得分:4)

您可以找到.reduce()

的最长数组
var longest = theArray.reduce(function(lsf, a) {
    return !lsf || a.length > lsf.length ? a : lsf;
}, null);
console.log("longest array has " + longest.length + " elements");

答案 1 :(得分:3)

只是上述答案的补充。如果阵列为50K或更多,则最好考虑首先将代码移入后端。在这种情况下,它可以通过java或其他低级语言完成,甚至可以使用并行编程解决方案。速度将大幅提升。

答案 2 :(得分:0)

你只能进行一次分配(或输出)次数,以提升它。

虽然我不百分之百确定if ()实际上会比其他方式更快(因为使用reduce() [不知道它的实施] ]),使用50k数组尝试此实现:

var max = 0;
var explode = new Array();

explode = [["667653905", "Johjn", "Smith"],
 ["500500500", "John", "Smith2", "Another field"], 
 ["12342312", "asd", "asdasd", "fghfgh", "fghfgh"]];

var explodeSize = explode.length;
for (var i = 0; i<explodeSize; i++) {
    if (max < explode[i].length) {
        max = explode[i].length;
    }
}
console.log(max);