开发者问题收集

为什么使用 length 方法时会出现“TypeError: 无法读取未定义的属性‘length’”

2022-09-11
60

我编写了一个返回最长单词的函数

const longestWord = (phrase) => {

const arr = phrase.split(" ");
let longest;

for (let i = 0; i < arr.length; i++) {

    if (arr[i].length < arr[i+1].length){
        longest = arr[i+1]
        [arr[i]] = [arr[i+1]]
    }
}
return longest;
}

let longWhich = longestWord("Web Development Tutorial");

console.log(longWhich);

但是我得到了一个错误

提前致谢

2个回答

问题是 i 指向最后一个元素,那么 i+1 就是 未定义 有多种方法可以解决这个问题,即扫描数组中最大的字符串 一种方法是遵循

function findLargestElement(phrase) {
   const arr = phrase.split(" ");
    let max, len = arr.length, i=0;
        max = i
        // here scan the largest element of array
        for (let j = i + 1; j < len; j++) {
            if (arr[max].length < arr[j].length) {
                max = j
            }
        }
        return arr[max]
}
console.log(findLargestElement('i am adnan'))//adnan
Adnan Malik
2022-09-11

这是一种替代方法,使用 array.prototype.reduce()

135439618
Carsten Massmann
2022-09-14