使用javascript从数组中删除重复项

3

可能是重复问题:
如何在 JavaScript 中从对象数组中删除重复项

我想要从一个数组中删除任何重复的元素。例如,如果我有112233,我希望只返回123

我的代码:

function array_unique(array) {
    var array_length = array.length;
    var new_array = [];
    for (var i = 0; i < array_length; i++) {
        if (array[i] == array[i + 1]) {

        }
        new_array.push(array[i]);
    }
    return new_array;
}

我不知道在 if 语句中该输入什么,以便去掉重复项。

5个回答

3

在这里,您可以使用O(n)复杂度来删除重复项。

var elems = {},
    arr = [1,2,1,1,2,3,3,3,3,4];
arr = arr.filter(function (e) {
    if (elems[e] === undefined) {
        elems[e] = true;
        return true;
    }
    return false;
});

我使用elems哈希(对象)来记住所有已经存在的元素。如果当前元素是elems哈希中的一个键,我就对它进行过滤。


2

使用原型来操作数组,如下所示:

Array.prototype.removeDups = function(){
            var local_array = this;
            return local_array.filter(function(elem, pos) {
                return local_array.indexOf(elem) == pos;
            });
        }

1
arrayWithNoDuplicates = new_array.filter(function(element, position) {
    return myArray.indexOf(element) == position;
})

0
在 if 条件语句后面加上 array.splice(i, 1),这将移除当前元素,从而删除重复项。

0
  fxnUniqOptns = function (array) {
    var oOptns = [];
    $.each(array, function (i, val) {
        if ($.inArray(val, oOptns) == -1)
            oOptns.push(val);
    });
    oOptns = oOptns.sort();
    return oOptns;
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接