javascript - 判断数组中的某个元素是否为字符串

标签 javascript arrays string element typeof

给定一个混合类型数组,“getLongestWordOfMixedElements”返回给定数组中最长的字符串。

注释:

  • 如果数组为空,则应返回空字符串 ("")。
  • 如果数组不包含字符串;它应该返回一个空字符串。

如何确定数组是否包含字符串,如以下代码所示:

function getLongestWordOfMixedElements(arr) {

    if (arr.length === 0) return ""
    var max = 0
    for (var i = 0; i < arr.length; i++){
        if(arr[i].length > max) max = arr[i]
    }
    return max
}

getLongestWordOfMixedElements([3, 'word', 5, 'up', 3, 1]);

最佳答案

您可以过滤数组中的字符串,然后使用减少操作来查找最长的字符串

function getLongestWordOfMixedElements(arr) {
  return arr
    .filter(item => typeof item === 'string')
    .reduce((longest, str) => str.length > longest.length ? str : longest, '');
}

console.log(getLongestWordOfMixedElements([3, 'word', 5, 'up', 3, 1]));

<小时/>

请注意,如果任何单词长度相同,则返回数组中较早的单词。

<小时/>

此外,您可以跳过过滤器并在reduce中进行类型检查...

return arr.reduce((longest, str) => {
  return typeof str === 'string' && str.length > longest.length ?
    str : longest;
}, '')

关于javascript - 判断数组中的某个元素是否为字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40275948/

相关文章:

Javascript 压缩数组自动索引或命名

c - strtok() 的问题

转义十六进制的 Python 字符串

python - 无法理解如何通过列表切片将字符串中的字符分配给列表在以下代码段中工作

Python - 关于字符串编辑的问题

javascript - getElementsByClassName 显示正确的长度,但不在第三个(最后一个)结果上执行代码

javascript - d3.js 强制定向图的日期时间解析和过滤

javascript - AngularJS alpha only 正则表达式接受特殊字符

c++ - 循环指针数组

java - 从 Collection/Map 获取参数化数组