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

获取JavaScript数组元素的最大长度,javascript,jquery,arrays,Javascript,Jquery,Arrays,如果我有以下数组: array = ['a', 'abcde', 'ab'] ; 我想得到数组元素ie 5的最大长度(对于元素'abcde') 我知道可以通过(eg)array[1].length获得数组元素的长度,但我不知道如何获得最大长度 任何JavaScript或jQuery的答案都很好 短暂性脑缺血发作 Paul Jones您可以使用jQuery进行更好的迭代 var maxLength = 0; $.each(array, function(i, item) { maxLen

如果我有以下数组:

array = ['a', 'abcde', 'ab'] ;
我想得到数组元素ie 5的最大长度(对于元素'abcde')

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

任何JavaScript或jQuery的答案都很好

短暂性脑缺血发作

Paul Jones

您可以使用jQuery进行更好的迭代

var maxLength = 0;

$.each(array, function(i, item) {
   maxLength = Math.max(maxLength, item.length);
});
或者简单的JavaScript

var maxLength = 0;

for (var i = 0, length = array.length; i < length; i++) {
   maxLength = Math.max(maxLength, array[i].length);
};
var maxLength=0;
for(var i=0,length=array.length;i
一种(可能是垃圾)不使用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;
  }
}
var myarray=['a','abcde','ab'];
var maxlen=0;
对于(i=0;imaxlen){
maxlen=myarray[i]。长度;
}
}

有几种方法可以做到这一点

我将遍历所有数组元素,并将最长的元素存储在局部变量中。通过比较第一个数组元素和第二个数组元素,然后存储较长的元素,可以获得最长的元素。然后继续将每个元素与迄今为止最长的元素进行比较

您只需要一个循环即可完成此操作。

一个衬里:

 Math.max.apply(Math, $.map(array, function (el) { return el.length }));
工作示例:

您也可以在较新的浏览器(甚至是使用
Array.prototype.map
的较旧浏览器)中不使用jQuery来完成此操作:


您可以创建自己的代码。 按照此操作->

Array.prototype.count = function(){  return this.length; }
然后使用

arr = [ "erhan",1,"sonmez",2 ];
arrCount = arr.count();

通过使用
Array.prototype.reduce()
,您可以为数组中的每个项目优雅地执行
Math.max()
计算。数组中的项是字符串还是子数组(2D数组、矩阵等)无关紧要,因为
string
array
都有
prototype.length()
函数

我还在上面添加了一个整数值检查

函数arrayItemMax(arr){
返回arr.reduce(函数(结果,val){
返回Math.max(结果,!isNaN(val)?parseInt(val):val.length);
}, 0);
}
功能打印(文本){
document.getElementsByTagName('body')[0].innerHTML+=text+'
; } 打印(arrayItemMax(['a','abcde','ab']);//5. 打印(arrayItemMax([1,5,2]);//5.
打印(arrayItemMax(['1','5','2']);//5
一个老问题的新答案:在ES6中,你可以做得更短:

Math.max(...array.map(el => el.length));

在这种情况下,有一个非常有用的函数。


嘿,我正准备写那行,虽然可能没有jQuery。@Tim没有jQuery?你疯了吗P@Tim:是的,考虑过了,但IE8和更低版本让我再次思考:-)编辑:添加。你已经有了+1。我现在该怎么办?“干得好”。做得好。一个好的旧for循环没有问题,可能比其他解决方案更快。不过,你可以先测试每个方法的本地版本。从收到的反对票来看,我想在这里自我贬低不是一个好主意。关于每种方法都很好。可以使用
数组将其转换为自包含表达式。reduce
。感谢所有回复-所有解决方案都非常有效。对于任何感兴趣的人来说,如果数组元素是数字的,则必须稍微添加一点:感谢所有回复。所有的解决方案都与我给出的示例完美结合,其中所有数组元素都是字符串。对于任何感兴趣的人来说,如果数组元素是数字的,则必须(我认为)进行轻微的添加:$.each(myarray,function(I,item){item=String(item)//addition maxLength=Math.max(maxLength,item.length);alert(item+''+maxLength)};如果有“更聪明”的方法,请告诉我。再次感谢保罗·琼斯的帮助
Math.max(...array.map(el => el.length));
['a', 'abcde', 'ab'].reduce((r,s) => r.length > s.length ? r : s, 0);