JavaScript 数组中最长的字符串,但有一些变化

标签 javascript arrays

所以我得到一个 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:当前

  1. acc(当前最长长度 int)
  2. 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/

相关文章:

php - 发送电子邮件 navigator.useragent

javascript - 用 replace() 替换 HTML 部分?

arrays - Ruby 多维数组 - 删除第一个位置的重复项,在第二个位置添加数字

python - 如何在 Python 中将二维数组的字符串值转换为整数值?

python - Julia 中类似 Numpy 的切片

javascript - d3.js 树布局 : collapsing other nodes when expanding one?

javascript - 使用函数构造函数的原型(prototype)添加新函数

php - 如果输入复选框,如何更新序列化数组

javascript - 发布前的 ajax 条件变量

javascript - 在 JavaScript 中向数组添加数字