【问题标题】:Find the first occurrence in an array list查找数组列表中的第一个匹配项
【发布时间】:2019-09-19 19:10:28
【问题描述】:

我刚刚编写了下面的代码来查找数组列表中的第一个匹配项。有什么有效的方法吗?

function hasName(names, req)
{
  let state = 'pending';

  for(let i in names)
  {
    if(req.indexOf(names[i]) !== -1)
    {
      state = 'init';

      break;
    }
  }

  return state;
}

hasName(['A', 'B', 'C'], ['B', 'D']);

【问题讨论】:

  • 那么如果names中的任何一项在req中找到,你返回'init'?如果您能简要说明预期内容,将会很有帮助。现在你的代码正在检查匹配的项目,但我没有看到它做任何与“第一次出现”相关的事情。一般来说,在数组中查找第一次出现的项目的最简单方法是使用类似Array.find() 或使用Array.indexOf()通过索引获取它
  • @TylerRoper 没错。我正在寻找 req 中与名称匹配的任何单个项目。第一次出现意味着第一个找到的 req 项。
  • @quirimmo 它的工作和超级简单,谢谢!

标签: javascript arrays ecmascript-6


【解决方案1】:

names.some(item => req.includes(item))

如果在 2 个数组中找到相同元素,则返回 true,否则返回 false

【讨论】:

  • 很好的解决方案,但正如 Tyler 所说,最好使用更多支持的原生函数,如 Array.find() 和 Array.indexOf()
【解决方案2】:

希望这对你有用

const hasName = (names, req) => names.some(name => req.includes(name)) ? 'init' : 'pending';

hasName(['A', 'B', 'C'], ['B', 'D']);

【讨论】:

    猜你喜欢
    • 2021-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-31
    • 2019-01-19
    • 2013-12-01
    • 2015-04-16
    • 1970-01-01
    相关资源
    最近更新 更多