Javascript 将阵列中的多个索引与另一阵列中的多个索引进行比较

Javascript 将阵列中的多个索引与另一阵列中的多个索引进行比较,javascript,arrays,list,compare,Javascript,Arrays,List,Compare,我想知道是否有一种比较(!=或==)一个数组中的几个值(多个索引)与另一个数组中的几个值(多个索引)的简洁方法。让我更深入地解释一下 我有一个函数的连续列表输入,我想将列表作为“行”添加到我的数据数组中,如下所示: var data = new Array(); function compare() { // lets say all the input lists have 4 elements, example [100, 200, 300, 400]. var inpu

我想知道是否有一种比较(!=或==)一个数组中的几个值(多个索引)与另一个数组中的几个值(多个索引)的简洁方法。让我更深入地解释一下

我有一个函数的连续列表输入,我想将列表作为“行”添加到我的数据数组中,如下所示:

var data = new Array();

function compare() {
    // lets say all the input lists have 4 elements, example [100, 200, 300, 400]. 
    var input_list = arrayfromargs(arguments);
    
    // concat the input with my data variable.
    data = data.concat([input_list]);
} 

但是,如果数据数组中已经存在一行在特定索引处具有相同值,我不希望将输入列表作为一行添加到数据数组中

例如,假设我想比较最后一个索引和第二个索引的值(在上面的示例中,索引2和3(值300和400))。如何最好地将第二和第三个索引处的输入列表值与数据数组行中第二和第三个索引处的每个值进行比较

我知道最明显的方法是在for循环中嵌套if-else,但是,这很快就会变得非常混乱


有没有更精细或优雅的方法来实现这一点?

假设您逐个数组添加数据数组,您可以维护类似哈希表的内容:

//跟踪最后两个索引的查找表
var hashTable={};
//没有匹配的最终对的数组数组
var dataArray=[];
函数addToArray(输入){
//忽略短输入数组
如果(输入长度<2)返回;
//获取输入数组的最后两个条目
var a=输入[input.length-2];
var b=输入[input.length-1];
//如果我们以前看过这些条目,请返回
if(哈希表[a]&哈希表[a][b])返回;
//将新条目添加到哈希表中
如果(!哈希表[a]){
哈希表[a]={};
}
哈希表[a][b]=真;
//将完整输入添加到数据数组
push(输入);
}
因此,使用您的示例数据:

addToArray([1, 2, 3, 4]);
// hashTable = {
//   3: { 4: true }
// }

addToArray([5, 6, 7, 8]);
// hashTable = {
//   3: { 4: true },
//   7: { 8: true }
// }

addToArray([9, 10, 7, 8]);
// hashTable[7][8] === true, so this addition fails

你有一个实际的例子和想要的结果吗?请访问,看看什么和。做一些研究,搜索相关话题等;如果遇到问题,请发布您的尝试,使用
[]
代码段编辑器记录输入和预期输出。@NinaScholz是的,那么让我们假设我的数据数组是:`[[1,2,3,4],[5,6,7,8],[9,10,7,8],[13,14,15,16]`而我当前的输入列表是:`[6,7,3,4]“我想把最后两个索引与我数组中所有行的最后两个索引进行比较。如果有一行最后两个索引的值与我的输入列表的值相同,我想忽略输入列表。