【问题标题】:Javascript: get values that contain in all arrays [duplicate]Javascript:获取包含在所有数组中的值[重复]
【发布时间】:2018-08-01 07:57:33
【问题描述】:

有多个数组

  1. [1,2,3]
  2. [2,3,4]
  3. [2,4,5]

现在我想获取包含在所有数组中的值。在此示例中,它将是 [2]。有没有简单的方法可以做到这一点?

我厌倦了https://stackoverflow.com/a/14438954/639035,但是,如果我将三个数组一个接一个地尝试,我会得到错误的结果(包括 4 个)。

更新 发布的答案有效,错误出现在我的代码的另一部分

【问题讨论】:

  • 在问题中发布您的非工作代码。
  • 如果你想要的输出是[2],你不是在寻找*非*唯一的值吗?即:出现在每个数组中的值。
  • 你能解释一下为什么是 2 而不是 1 吗?
  • 啊,错误出现在代码的另一部分......如果我应该删除它,我不确定:/答案中发布的解决方案有效!
  • 删除这个问题,因为完全不清楚。

标签: javascript arrays filtering


【解决方案1】:

您可以使用:

示例:

let a1 = [1, 2, 3];
let a2 = [2, 3, 4];
let a3 = [2, 4, 5];

let result = a1.filter(v => a2.includes(v) && a3.includes(v));

console.log(result);

【讨论】:

  • 此解决方案与问题标题中所述相反。
  • @Ele 我假设 OP 想要过滤所有数组中存在的值。至少这是他的预期输出告诉我们的。
  • @MohammadUsman,我想是这样,我编辑了帖子,他批准了这个更改
【解决方案2】:

这会起作用:

let a = [1,2,3];
let b = [2,3,4];
let c = [2,4,5];

let result = a.reduce((total, elem) => {
    if((b.indexOf(elem) !== -1) && (c.indexOf(elem) !== -1)) {
        total.push(elem);
    }
    return total;
}, []);

console.log(result);

【讨论】:

    猜你喜欢
    • 2020-10-21
    • 1970-01-01
    • 2022-12-22
    • 2012-11-09
    • 2010-12-29
    • 2020-09-06
    相关资源
    最近更新 更多