gpt4 book ai didi

javascript - 比较未指定数量的数组以获得javascript中的公共(public)值

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:43:39 24 4
gpt4 key购买 nike

我想知道如何比较两个或更多(可能无限)数组的共同值,并将这些值有效地插入新数组。下面我有一个接受无限参数的函数,但我不确定这是否是一个好的起点。 PHP 似乎有一个方法可以做我想做的事情,称为 array_intersect。 javascript 是否提供类似的东西?

注意:我已经找到了如何用两个左右的数组完成此操作的示例,但我还没有找到如何将此类方法应用于未指定数量的数组的示例。因此,我不认为这是一个重复的问题。

为了进一步说明,数组可能会填充任何东西。字母、数字、符号、单词,凡是你能想到的,它都可能在那里。

var sampleOne = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12];
var sampleTwo = [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18];

function FindDirectRelation() {
for(var i = 0; i < arguments.length; ++i) {
console.log(arguments[i]);


};
};

var directRelation = FindDirectRelation(sampleOne, sampleTwo);

我仍然是一个编码新手,所以请确保所有内容都以一种足够简单的方式让我理解。

最佳答案

使用现有的与 2 个数组一起工作的相交,我们可以在需要相交的数组上使用内置的 reduce() 方法将一个公共(public)子集链接在一起:

function intersect(a, b) {
var aa = {};
a.forEach(function(v) { aa[v]=1; });
return b.filter(function(v) { return v in aa; });
}

var r1=[1,2,3],
r2=[1,3,4,5],
r3=[5,1,3];

alert([r1, r2, r3].reduce(intersect)) // shows: 1,3

如果您将“相交”定义为存在于多个数组中(不是每个数组),那么它会更复杂...

关于javascript - 比较未指定数量的数组以获得javascript中的公共(public)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34389765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com