gpt4 book ai didi

javascript - 比较多个数组的数组元素

转载 作者:行者123 更新时间:2023-11-29 21:14:32 25 4
gpt4 key购买 nike

我试图遍历数组数组,并按顺序将元素相互比较以找到共同元素。所以假设我们有 var arr = [[1,2,3],[4,2,5]]; 我想先比较 [i][i] 和 [i+1 ][i]、[i][i+1] and [i+1][i+1] and [i][i+2] and [i+1][i+2] 等等。这是我的代码:

function sym(args) {
var fullArr = [];
var finalArr = [];
// store the arguments inside a single array
for (var count = 0; count < arguments.length; count ++) {
fullArr[count] = arguments[count];
}
// loop through finalArr[];
for (var i = 0; i < fullArr.length; i++) {
if (fullArr[i][i] == fullArr[i++][i++]) {
// if the element matches (it is a common element)
// store it inside finalArr
finalArr[i] = fullArr[i];
}
}
return finalArr;
}

sym([1, 2, 3], [5, 2, 1, 4]);

问题:当我运行代码而不是包含匹配元素的数组时,我得到一个空数组

最佳答案

您首先必须遍历一个数组并查看另一个数组是否包含您指定的值。

我的回答类似于嵌套的 for 循环,因为 includes 方法正是这样做的。它接受一个元素作为参数,并检查调用它的数组是否包含该元素。为了做到这一点,它必须在最坏的情况下遍历数组中的所有元素。

我的回答还假设您只想计算一次重复匹配项。

function sym(args) {
var fullArr = [];
var finalArr = [];
// store the arguments inside a single array
for (var count = 0; count < arguments.length; count ++) {
fullArr[count] = arguments[count];
}
// loop through finalArr[];

//since you are comparing only two arrays in this
//example you just have to iterate over each element in the first array aka fullArr[0] and
//check if each element "e" is also in the second array aka fullArr[1]
//AND that your final output array does not already contain it.
//If both of these are true then we push the element to the output array.
fullArr[0].forEach(function(e){
if(fullArr[1].includes(e) && !finalArr.includes(e)) finalArr.push(e);

});
return finalArr;
}

sym([1, 2, 3], [5, 2, 1, 4]);

但是如果你想检查一个特定的元素是否存在于一个 n 长度数组的所有集合中,那么我会建议这样的事情:

function sym(args) {
var fullArr = [];
var finalArr = [];
// store the arguments inside a single array
for (var count = 0; count < arguments.length; count ++) {
fullArr[count] = arguments[count];
}

var newArr = fullArr[0].reduce( function(prev, e1) {
if(prev.indexOf(e1) < 0 && fullArr.every( function(arr){
return arr.indexOf(e1) > -1;
})){
return [...prev, e1];
}else{
return prev;
};
},[]);
alert(newArr);
return newArr;
}

sym([1,1, 2, 3,4], [5, 2, 1, 4], [4,1,2, 5]);

关于javascript - 比较多个数组的数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39980468/

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