我的代码出了什么问题?寻找数组

时间:2017-09-18 22:57:57

标签: javascript arrays

我正在做一个要求数组中最短字符串长度的赋值。如果数组为空,它应该返回0。我一直收到一条错误消息,表示它没有处理关系。

此外,测试数组arr = ['one', 'two', 'three', 'aa']会返回3而不是2的值,因为它应该...

function getLengthOfShortestElement(arr) {
  var array;
  if (arr.length > 0) {
      for (i = 0; i < arr.length; i++) {
        if (typeof array === "undefined") {
            array = arr[i].length;
        } else if (arr[i].length < array) {
            array = arr[i].length;
        } 
        return array;
      }
  } else {
    return 0;
  }
}

2 个答案:

答案 0 :(得分:1)

有人在评论中指出了这一点,只是将return移出for循环的正文。

function getLengthOfShortestElement(arr) {
  var array;
  if (arr.length > 0) {
      for (i = 0; i < arr.length; i++) {
        if (typeof array === "undefined") {
            array = arr[i].length;
        } else if (arr[i].length < array) {
            array = arr[i].length;
        } 
      }
     return array;
  } else {
    return 0;
  }
}

var arr = ['one', 'two', 'three', 'aa'];

document.write(getLengthOfShortestElement(arr));

答案 1 :(得分:0)

使用数学库的更简单方法是:

function getMin(arr){
    if(!arr.length) return 0
    return Math.min.apply(null, arr.map(el => el.length))
}