我想重新使用reduce重新創建下劃線js函數差異。 差異需要多個數組並返回類似於第一個數組的所有值。所以[1,2],[2,3],[1,3]應該吐出[1,2,2,1]。我想我的每個子數組(循環),如果我的子元素的值在我的第一個數組中有一個索引,然後我將該元素推到我的累加器值(這是一個空數組)。在多個數組中找到差異。使用減少
某些原因我沒有得到我期望的輸出結果[1,2,3,2,1,2]。我得到了[[1,2],[2,4],[1,2]]。任何人都可以幫助我使用reduce進行重寫。謝謝。
function difference(arrays){
var arrayed=Array.prototype.slice.call(arguments);
var first=arrayed[0];
var rest=arrayed.slice(1);
return reduce(first,function(acc,cur){
forEach(rest,function(sub){
if (sub.indexOf(cur)>-1){
acc.push(sub);
}});
return acc;
},[]);
}
console.log(difference([1,2,3],[2,4],[1,2],[4,5]));
我知道IM調用的forEach的方法是不同的,但是那是因爲我自己的foreach版本接受兩個參數。
你的算法的解釋是不清楚。如果結果是第一個數組的值,那麼從後續數組中重複值? – RobG