我发现了与我遇到的问题有关的问题,但还没有找到适合我的解决方案。我有这个数组:[[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;
}


那应该以非常低的执行时间解决您的问题。

10-06 04:48