我需要找到给定数组中最长字符串的长度。如果数组为空,它应该返回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
但是这个没用。有什么想法或有更好的选择吗?
答案 0 :(得分:3)
这显然是一项减少工作,可以简单地按如下方式实施;
var ss = ['one', 'two', 'three'],
ln = ss.reduce((r,s) => r > s.length ? r : s.length, 0);
console.log(ln);
&#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);