【发布时间】:2021-02-02 01:13:56
【问题描述】:
我需要一些帮助来查找多维数组和简单数组的对称差异。多维数组单元格的每个内部数组中的第一个值是与简单数组进行比较的索引。
所以
array1 = [1,4,6,7]
array2 = [[1,"more",12],[8,"some",12]]
结果应该是这样的:
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 的差异。
理想情况下,这些不会覆盖现有数组,而是使用输出结果创建一个新数组。除了这两种数组格式之外,不会有其他数组格式。 如果有帮助,每个比较都可以使用不同的功能。您不必对两者都使用相同的功能,但如果可以,那就太好了。
我尝试了一些循环比较的排列 也在这里找到解决方案 How to get the difference between two arrays of objects in JavaScript 以及这里的简单数组方法 How to get the difference between two arrays in JavaScript?
但我只是没有成功。有人可以帮我一把,并解释他们的解决方案吗?只要其广泛跨浏览器兼容,任何现代工具都可以。我所有的其他代码都坚持使用 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);
【问题讨论】:
-
到目前为止你得到了什么?不过,可能需要重新编写原始问题陈述,使其看起来不像是直接来自您的家庭作业/面试问题。
-
我早已过了做作业的年龄。让 newNurkles = new Array(); for(var i = 0; i
-
家庭作业或编码问题没有年龄限制 :) 区分的标准不是很清楚,特别是在比较 array2 和 array1 的示例中(至少我还不太明白)。
-
this.的作用是什么?您是否显示部分代码并将我们引导到逻辑错误的位置? ...你问一个问题然后引导问题出在哪里?但是,既然你问了这个问题,你怎么知道它在哪里? ....一堆反问:显示所有或更多代码。因为您所展示的内容本身缺乏识别逻辑错误的能力。
标签: javascript arrays multidimensional-array