获取JavaScript数组元素的最大长度

Pau*_*nes 9 javascript arrays jquery

如果我有以下数组:

array = ['a', 'abcde', 'ab'] ;
Run Code Online (Sandbox Code Playgroud)

我想获得数组元素的最大长度,即5(对于元素'abcde').

我知道你可以通过(例如)array [1] .length获取数组元素的长度,但我不知道如何获得最大长度.

JavaScript或jQuery中的任何答案都会很棒.

TIA

保罗琼斯

And*_*y E 21

单行为您:

 Math.max.apply(Math, $.map(array, function (el) { return el.length }));
Run Code Online (Sandbox Code Playgroud)

工作示例:http://jsfiddle.net/5SDBx/

你可以在没有jQuery的情况下在更新的浏览器(或者甚至是具有兼容性实现的旧浏览器Array.prototype.map)中实现它:

Math.max.apply(Math, array.map(function (el) { return el.length }));
Run Code Online (Sandbox Code Playgroud)

  • 嘿,我正准备写那条线,虽然可能没有jQuery. (2认同)
  • 你已经拥有了+1.现在我该怎么做?做得好".做得好. (2认同)

Dáv*_*zki 8

一个老问题的新答案:在 ES6 中,你可以做得更短:

Math.max(...array.map(el => el.length));
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 5

一种(可能是垃圾)方式,不使用Jquery:

var myarray = ['a','abcde','ab'];
var maxlen = 0;
for (i=0; i<myarray.length; i++) {
  if (myarray[i].length>maxlen) {
    maxlen = myarray[i].length;
  }
}
Run Code Online (Sandbox Code Playgroud)

  • 一个好的旧循环没有错,可能比其他解决方案更快.您可以先测试本机*each*方法. (2认同)

Man*_*vel 5

在这种情况下,有一个非常有用的功能。 数组归约

['a', 'abcde', 'ab'].reduce((r,s) => r.length > s.length ? r : s, 0);
Run Code Online (Sandbox Code Playgroud)


ale*_*lex 2

您可以使用 jQueryeach()进行更好的迭代。

var maxLength = 0;

$.each(array, function(i, item) {
   maxLength = Math.max(maxLength, item.length);
});
Run Code Online (Sandbox Code Playgroud)

或者普通的 JavaScript...

var maxLength = 0;

for (var i = 0, length = array.length; i < length; i++) {
   maxLength = Math.max(maxLength, array[i].length);
};
Run Code Online (Sandbox Code Playgroud)