【发布时间】:2016-11-09 04:00:35
【问题描述】:
我搜索过很多次,不仅在 StackOverflow 上,而且在网络上的许多其他地方。我已经尝试了看似一切的东西,但我的逻辑从根本上存在缺陷。对于引入另一个“数组中的重复项”问题,我深表歉意,但我被卡住了,似乎没有任何工作按预期工作。
无论如何,我有一个多维 JavaScript 数组,只有 2 层深。
var array = [[Part #, Description, Qty:],
[Part #, Description, Qty:],
[Part #, Description, Qty:]]; //etc
我需要做的是创建一个搜索array 并返回任何重复的“Part #”行的函数。当它们返回时,我希望返回整个内部数组,并附上描述和数量。
这样做的诀窍在于,符合“重复”条件的零件编号会以不同的方式结尾(特别是最后 4 个字符),因此使用 String.prototype.substr 是有意义的(对我而言)。
我知道我正在寻找的数组中有重复项,所以我知道如果我有解决方案,它将返回那些 Part #'s。
这是我迄今为止尝试过的最接近解决方案的方法:
function findDuplicateResults(arr) {
var result = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i][0].substr(0,5) === arr[++i][0].substr(0,5)) {
result.push(arr[i]);
}
}
return console.log(result);
}
我的想法是,如果数组中的元素(带有 substr(0,5) 的元素等于行中的下一个元素,则将其推送到结果数组。我也需要另一个副本。该代码仅显示带有 substr(0,5) 的欺骗。
我已经尝试过使用高阶函数,例如 map、forEach、reduce 和 filter(filter 让我难以理解为什么它不符合我的要求),但是我只能以这种方式返回[] 或整个数组。我用于所述高阶函数的逻辑保持不变(这可能是这里的问题)。
我预计我的if 条件是问题最多的地方。非常感谢任何指针或解决方案。
【问题讨论】:
标签: javascript arrays multidimensional-array duplicates