Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 求多维数组和一维数组的对称差分_Javascript_Arrays_Multidimensional Array - Fatal编程技术网

Javascript 求多维数组和一维数组的对称差分

Javascript 求多维数组和一维数组的对称差分,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我需要一些帮助来找到多维数组和简单数组的对称差分。多维数组单元的每个内部数组中的第一个值是与简单数组进行比较的索引 所以 结果应该是: compare(array1, array2) = //[4,6,7] // there are three differences when compared this way compare(array2, array1) = //[8,"some",12] // there is only one difference when com

我需要一些帮助来找到多维数组和简单数组的对称差分。多维数组单元的每个内部数组中的第一个值是与简单数组进行比较的索引

所以

结果应该是:

compare(array1, array2) = //[4,6,7] // there are three differences when compared this way
compare(array2, array1) = //[8,"some",12] // there is only one difference when compared this way
我需要返回一个数组,该数组既有array1与array2之差,也有array2与array1之差,格式与前导数组相同

理想情况下,它们不会覆盖现有数组,而是使用输出结果创建一个新的数组。除了这两种数组格式之外,不会有其他数组格式。 如果有帮助,每个比较可以使用不同的函数。你不必对两者都使用相同的函数,但如果可以,那就太好了

我尝试了一些循环比较的排列 这里也有解决方案 和这里的简单数组方法

但我就是没有成功。有人能帮我一下,并解释一下他们的解决方案吗?任何现代工具都很好,只要其广泛的跨浏览器兼容。我所有的其他代码都坚持ES6,所以这将是理想的。如果快速推出一行解决方案,请解释发生了什么,以便我可以学习

谢谢

更新@Dave,这对我来说很有意义,但失败后,我开始在上面的帖子中尝试不同的过滤方法和其他技术,但没有多大成功

let newNurkles = new Array();
        for(var i = 0; i < nurkles.length; i++){
            if(this.activeNurkles.includes(nurkles[i])){
            } else {
                newNurkles.push(nurkles[i]);// if not then push to array
            }
        }
        console.warn("Nurkles to Add" + newNurkles);

这显示了如何对两个数组执行析取并,一个是一维数组,另一个是多维数组

对称性由单个阵列的每个元素和多阵列中每个子阵列的第一个元素确定。多层将只有一层深

用途:

步骤:

映射到第一个输入数组 对于每个元素,过滤第二个输入以排除在第一个输入中找到的输入 将结果限制为仅返回第一个数组 注:

o是数组1的迭代 t是数组2的迭代 t[0]表示匹配键 t[idx]表示正在迭代的子数组的当前值 array2的结果将生成多维数组 常数数组1=[1,4,6,7]; 常量数组2=[[1,更多,12],[8,一些,12],[7,3,9],[2,7,5,4],[4,3]; const oneToTwo=array2.mapt,idx=>array1.filtero=>t[idx]!=o[0] const twoToOne=array1.mapo=>array2.filtert=>o!==t[0][0] console.logoneToTwo;
console.logtwoonew到目前为止你得到了什么?可能需要重新编写原始的问题陈述,这样它看起来就不会直接来自你的家庭作业/面试问题。我早就过了做家庭作业的年龄了。设newNurkles=新数组;forvar i=0;it[idx]!==o由过滤器理解。为什么不仅仅是t[idx]!==o。我不明白o=>在这个例子中实际在做什么,它是一个。它是函数{…}的替代品和其他细节
let newNurkles = new Array();
        for(var i = 0; i < nurkles.length; i++){
            if(this.activeNurkles.includes(nurkles[i])){
            } else {
                newNurkles.push(nurkles[i]);// if not then push to array
            }
        }
        console.warn("Nurkles to Add" + newNurkles);