javascript - 我需要比较多个数组并注销 JavaScript 中的差异。这是任何可能长度的嵌套数组
问题描述
这就是我所拥有的,目前,我能够有所作为。但正如您将从我正在比较的数组中看到的那样,我想返回 2 个值。也就是说,如果我将 a1 中的第一个数组与 a2 中的第一个数组进行比较,我应该得到差异,同样,如果我将 a1 中的第二个数组与 a2 中的第二个数组进行比较,我应该得到差异 4。现在我只得到一个值。
var findDivergence = function (a1, a2) {
for (let q = 0; q < a1.length; q++) {
var result = [];
for (i = 0; i < a1[q].length; i++) {
if (a1[q][i] !== a2[q][i]) {
result.push(i);
console.log(result.length)
}
}
}
return `Length is : ${result.length}`;
};
console.log(findDivergence([
["a", "b", "c", "d", "e", "f", "g"],
["a", "b", "c", "d", "e", "f", "g"]
],
[
["a", "b", "d", "r", "e", "q", "g"],
["a", "2", "d", "r", "e", "q", "g"]
]
));
解决方案
像这样?
var zip = function(a1, a2) {
const len = a1.length < a2.length ? a2.length : a1.length;
const result = [];
for (let i = 0; i < len; i++) {
result.push([a1[i], a2[i]]);
}
return result;
}
var findDivergence = function (a1, a2) {
const result = [];
for (const [aa, bb] of zip(a1, a2)) {
let divergences = 0;
for (const [a, b] of zip(aa, bb)) {
if (a !== b) divergences++;
}
result.push(`Length is ${divergences}`);
}
return result;
};
console.log(findDivergence([["a", "b", "c", "d", "e", "f", "g"], ["a", "b", "c", "d", "e", "f", "g"]], [["a", "b", "d", "r", "e", "q", "g"], ["a", "2", "d", "r", "e", "q", "g"]]));
推荐阅读
- .net - .NET MediatR 和 EF Core DbContext 连接不支持 MultipleActiveResultSets
- wpf - 如何在 DataGridCellEditEnding 方法中获取 DataGridTemplateColumn 的值
- python - Pandas/Python 函数 str.contains 返回错误
- asp.net-mvc - 使用 ASP.Net MVC 访问 SharePoint 文档库
- c# - Crystal Reports、vb.net 和动态图片:代码中的宽度单位测量错误
- python - 如何在pydatatable中加入两个具有不同键列名的数据框?
- powershell - 为什么我找不到在 PowerShell 中定义属性的位置?PSObject 类的源代码在哪里?
- android - 从 Android 上的帧缓冲区读取
- python - eval_training_Data 是否使用完整的训练数据
- c++ - C++:base64 到 PNG 反斜杠问题