gpt4 book ai didi

javascript - 多个可变长度javascript数组中的公共(public)值

转载 作者:行者123 更新时间:2023-11-30 17:24:14 26 4
gpt4 key购买 nike

我在 javascript 中有 7 个数组,我需要找到所有数组中存在的值。

我想我不是第一个提出这个问题的人,但我找不到解决方案。我读了很多答案,但它们都只比较 2 个数组,并且该逻辑不适用于多个数组。

我尝试了 Simplest code for array intersection in javascript 中提出的功能但它们不适合我拥有的那种阵列。

我拥有的数组的元素长度可以不同,元素的长度也可以不同。我也可能有零项数组,不应在其中比较它们。

主要问题是数字长度不同。我尝试的所有功能都需要排序,但这会导致问题。

给定这个数组:

xnombre = [1,2,3,4,5,24,44,124,125,165];
xacomp = [1,5,44,55,124];
xeje = [];
xanio = [1,5,44,55,124];
xini = [1,5,44,55,124];
xaporte = [1,5,44,55,122,123,124,144,155,166,245];
xpcia = [2,1,3,4,6,5,7,9,12,12,14,15,44,16,17,19,124];

数组的第一个排序为:

[1, 124, 125, 165, 2, 24, 3, 4, 44, 5] 
[1, 124, 44, 5, 55]

当我“相交”时,我只得到 [1,124],但错过了 44 和 5。

如有任何帮助,我们将不胜感激。谢谢

最佳答案

The function from the other question works , 但你必须 sort your array numerically ,而不是字典顺序,因为您使用的是数字,而不是字符串。

function sortNumber(a,b) {
return a - b;
}

var xnombre = [1,2,3,4,5,24,44,124,125,165];
var xacomp = [1,5,44,55,124];

xnombre.sort(sortNumber);
xacomp.sort(sortNumber);

DEMO

要将此应用于多个数组,您可以连续应用此函数:

// var result = intersect(a, b, c, ...);
function intersect(var_args) {
// sort arrays here or beforehand
var target = arguments[0];
for (var i = 1; i < arguments.length; i++) {
if (arguments[i].length > 0) {
target = intersection_safe(target, arguments[i]);
}
}
return target;
}

关于javascript - 多个可变长度javascript数组中的公共(public)值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24565811/

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