所以我得到一个 int
数组,我应该找到数字最多的那个,但是如果有几个相同大小(即最长的大小),我要归还第一个。
我怀疑我必须对索引做一些事情,但我只是不知道做什么
function findLongest(array){
let arr = array.toString().split(',')
let result = arr.reduce((acc,cur,index) => acc.length > cur.length ? acc : cur)
return parseInt(result)
}
最佳答案
首先让我们看一下reduce
:
array.reduce(function(total, currentValue, currentIndex, arr), initialValue)
选项 1:
使用acc.length >= cur.length ? acc:当前
。
- acc(当前最长长度 int)
- cur(当前索引)
如果 acc
具有更大或相同的长度,则保留 acc
else 使用 cur
.
var arr = [1, 22, 33, 4444, 5555, 6666, 123, 21];
function findLongest(array){
let arr = array.toString().split(',');
let result = arr.reduce((acc,cur,index) => acc.length >= cur.length ? acc : cur);
console.log(`first matching longest int: ${result}`);
return parseInt(result)
}
findLongest(arr);
选项 2:
由于您的函数使用 reduce
,它将循环遍历数组(从左到右)并输出最后一个匹配,您可以使用 reduceRight
从右侧循环遍历数组(相反顺序)。您将轻松获得第一个匹配的。
(感谢评论中的@marzelin)
var arr = [1, 22, 33, 4444, 5555, 6666, 123, 21];
function findLongest(array){
let arr = array.toString().split(',');
let result = arr.reduceRight((acc,cur,index) => acc.length > cur.length ? acc : cur);
console.log(`first matching longest int: ${result}`);
return parseInt(result)
}
findLongest(arr);
关于JavaScript 数组中最长的字符串,但有一些变化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43853584/