找到数组项的最长长度 - JS

时间:2017-06-20 07:32:42

标签: javascript arrays

我需要找到给定数组中最长字符串的长度。如果数组为空,它应该返回0。

所以这是我的尝试:

function getLengthOfLongestElement(arr) {
  var biggestNum = 0;

 for(var i=0; i< arr.length; i++){
    if(arr[i] > biggestNum){
        biggestNum = arr[i];
     }
 }
}

var output = getLengthOfLongestElement(['one', 'two', 'three']);
console.log(output); // --> MUST RETURN 5

但是这个没用。有什么想法或有更好的选择吗?

6 个答案:

答案 0 :(得分:3)

这显然是一项减少工作,可以简单地按如下方式实施;

&#13;
&#13;
var ss = ['one', 'two', 'three'],
    ln = ss.reduce((r,s) => r > s.length ? r : s.length, 0);
console.log(ln);
&#13;
&#13;
&#13;

答案 1 :(得分:2)

您应该使用字符串length属性。因此,arr[i]不是arr[i].length,而是function getLengthOfLongestElement(arr) { var biggestNum = 0; for (var i = 0; i < arr.length; i++) { if (arr[i].length > biggestNum) { biggestNum = arr[i].length; } } return biggestNum; }

{{1}}

答案 2 :(得分:2)

要在混合中添加另一个替代方法:Math.max可以将长度作为参数(通过在输入上映射它们)来获取最长的字符串:

function getLengthOfLongestElement(arr) {
  return Math.max(0,...arr.map(s=>s.length));
}

var output = getLengthOfLongestElement(['one', 'two', 'three']);
console.log(output); 

答案 3 :(得分:1)

您应该使用arr[i].length代替arr[i]进行测试,并且应该在功能结束时返回biggestNum

function getLengthOfLongestElement(arr) {
  var biggestNum = 0;

  for (var i = 0; i < arr.length; i++) {
    if (arr[i].length > biggestNum) {
      biggestNum = arr[i].length;
    }
  }
  return biggestNum;
}

<强>演示:

function getLengthOfLongestElement(arr) {
  var biggestNum = 0;

  for (var i = 0; i < arr.length; i++) {
    if (arr[i].length > biggestNum) {
      biggestNum = arr[i].length;
    }
  }
  return biggestNum;
}

var output = getLengthOfLongestElement(['one', 'two', 'three']);
console.log(output);

答案 4 :(得分:1)

我首选的解决方案是使用reduce。

const arr = ['one', 'two', 'three'];
const maxLength = arr.reduce((acc, item) => Math.max(acc, item.length), 0);

console.log(maxLength)

答案 5 :(得分:0)

对于零元素,只检查数组长度是否为零,否则arr [i] .length将返回字符串的长度

function getLengthOfLongestElement(arr) {
  var biggestNum = 0;
  if (arr.length > 0) {
    for (var i = 0; i < arr.length; i++) {
      if (arr[i].length > biggestNum) {
        biggestNum = arr[i].length;
      }

    }
  } else if (arr.length == 0) {
    biggestNum = 0
  }
  return biggestNum

}

var output = getLengthOfLongestElement(['one', 'two', 'three']);
console.log(output);