我发现了与我遇到的问题有关的问题,但还没有找到适合我的解决方案。我有这个数组:[[1, red], [2, green], [3, red], [3, blue], [5, green]]
,我需要它返回[[1, red], [2, green], [3, blue]
。我需要代码执行的操作是遍历数组,仅找到匹配的颜色,而不是数字,并消除整个索引。
我已经尝试过这样的事情
var uniqueArray = colors.filter(function(item, pos) {
return colors.indexOf(item) == pos;
});
我在想这段代码正在寻找完全匹配,而我只需要部分匹配。因此,基本上,我将如何修改
.filter()
以消除部分重复(仅匹配颜色)?如果需要提供更多信息,请告诉我。
最佳答案
// Parameter marr: multidimensional array
function removeSameColors(marr){
var carr = [];
var rarr = [];
var j = -1;
for(var i = 0, l = marr.length; i < l; i++){
if(carr[marr[i][1]] !== true){
carr[marr[i][1]] = true;
rarr[++j] = marr[i];
}
}
return rarr;
}
那应该以非常低的执行时间解决您的问题。