【问题标题】:Javascript - matching first value from array search with value from other arrayJavascript - 将数组搜索中的第一个值与其他数组中的值匹配
【发布时间】:2018-03-24 11:28:56
【问题描述】:

假设我们有两个数组

const arr1 = [1, 2, 3, 4, 5];

const arr2 = [6, 7, 8, 9, 10, 4, 5,];

我想只返回第一个匹配值而不执行两个 for 循环。所以不要从arr1 中获取第一个值,然后在arr2 中查找它,然后是第二个值等。

在这种情况下,我需要返回4

可以在没有 jQuery 的情况下在 React/Redux 环境中工作。

【问题讨论】:

  • 有什么特别的理由不想要循环吗?
  • 可能他的老师说不要这样做。
  • 我处理了大量数据,因此 for 循环需要很长时间才能执行。我做的最后一个花了大约 20 秒

标签: javascript arrays reactjs loops search


【解决方案1】:

您可以使用Set 的力量。

const
    arr1 = [1, 2, 3, 4, 5],
    arr2 = [6, 7, 8, 9, 10, 4, 5],
    result = arr2.find((s => a => s.has(a))(new Set(arr1)));

console.log(result);

【讨论】:

    【解决方案2】:

    Ecmascript5 解决方案(带Array.some() 函数):

    var arr1 = [1, 2, 3, 4, 5],
        arr2 = [6, 7, 8, 9, 10, 4, 5,],
        result;
    	
    arr2.some(function(n){ return arr1.indexOf(n) !== -1 && (result = n) })
    
    console.log(result);

    【讨论】:

      【解决方案3】:

      您可以将find()includes() 方法一起使用。

      const arr1 = [1, 2, 3, 4, 5];
      const arr2 = [6, 7, 8, 9, 10, 4, 5,];
      
      var r = arr1.find(e => arr2.includes(e));
      console.log(r)

      【讨论】:

        【解决方案4】:
        const arr1 = [1, 2, 3, 4, 5];
        
        const arr2 = [6, 7, 8, 9, 10, 4, 5,];
        
        arr1.find((x) => arr2.indexOf(x) >=0);
        

        这将抓住第一场比赛

        【讨论】:

        • 不应该返回indexOf(x) > -1吗?
        • @pete 0 >= 00 > -1 相同
        • 没有看到= :)。谢谢!
        猜你喜欢
        • 2021-02-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多