我已经搜索高低,不仅在StackOverflow上,而且在网络上其他许多地方。我尝试过所有东西,但从根本上说,我的逻辑有些缺陷。我对引入另一个“数组重复”问题表示歉意,但我被卡住了,似乎没有按预期工作。在多维Javascript数组中返回重复项
无论如何,我有一个多维JavaScript数组,只有2级深。
var array = [[Part #, Description, Qty:],
[Part #, Description, Qty:],
[Part #, Description, Qty:]]; //etc
我需要做的就是创建一个搜索array
并返回任何重复的“零件编号”线的功能。当它们返回时,我想要返回整个内部数组,并完成描述和数量。
这样做的诀窍是,符合'重复'的部分#将以不同的方式结束(特别是最后4个字符),所以使用String.prototype.substr
对我来说是有意义的。
我知道数组中有重复的数据,所以我知道如果我有解决方案,它会返回这些Part#的。
这是我到目前为止这让我最接近的解决方案尝试:
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)的伪造。 有尝试使用高阶函数这样一个为每个,减少和过滤(过滤器是让我不知道为什么它不会做我想做的事的过滤器),但是我只能以这种方式返回[]
或整个数组。我用于表示高阶函数的逻辑保持不变(这可能是这里的问题)。
我在期待我的if
条件是最大的问题。任何指针或解决方案,不胜感激。
非常感谢,它的工作!快速跟进,为什么arr.length - 1?其余的很有意义,但我陷入了这一点。再次感谢! –
因为数组有零基索引。想象一下,你有一个项目的数组。 array.length是1对不对?现在想象你想访问数组中的项目。数组[1]将不起作用,因为它不存在。你的项目在数组[0]或数组[array.length - 1] –
,这让我意识到我应该使用'<='而不是'<。查看更新的答案 –