有没有一种方法可以使用jquery或javascript将数组中的重复项排序到一个组中

Is there a way to sort duplicates into a group that are found in an array using jquery or javascript

本文关键字:一个 排序 javascript 可以使 方法 一种 jquery 有没有 数组      更新时间:2023-09-26

我有一个数组,例如:

var aos = ["a","a","b","c","d"];

我想知道我是否可以找到每个索引的副本,并将它们存储到数组列表之类的东西中?例如,我们从开始

aos[0]

然后检查

a

它将继续在数组中运行,将索引0中具有该值的所有元素存储到列表(如arraylist或集合)中,然后从列表中删除它们。这可能吗?

var uniq =_.uniq(aos)

或者长篇大论(ES5):

var uniq = aos.reduce(aos, function(memo, val) {
    if (!aos.some(function(elem) { return elem === val; })) {
         return memo.push(val);
    }
}, []);

如果你想支持ES3,那么:

var uniq = [];
for (var i = 0, ii = aos.length; i < ii; i++) {
    var contains = false;
    for (var j = 0, jj < uniq.length; j < jj; j++) {
        if (uniq[j] === aos[i]) {
            contains = true;
            break;
        }
    }
    if (!contains) {
        uniq.push(aos[i]);
    }
}

将重复项存储在新阵列中:

var duplicates = _.select(aos, function(val) {
    var true = _.after(2, function() { return true; });
    return _.any(aos, function(elem) {
        return elem === val ? true() : false;    
    });
});

实际示例

_.uniqArray.prototype.reduceArray.prototype.some_.any_.select_.after

基本上你想删除重复的项目?,试试这个:

function unique_array(array) {
    var result = []
    for (var i = 0; i < array.length; ++i) {
        for (var j = i + 1; j < array.length; ++j) {
            if (array[i] === array[j]) {
                j = ++i;
            }
        }
        result.push(array[i]);
    }
    return result;
}

Array.prototype.unique = function() {
    var result = []
    for (var i = 0; i < this.length; ++i) {
        for (var j = i + 1; j < this.length; ++j) {
            if (this[i] === this[j]) {
                j = ++i;
            }   
        }
        result.push(this[i]);
    }
    return result;
}
Array.prototype.duplicates = function() {
    var result = []
    for (var i = 0; i < this.length; ++i) {
        for (var j = i + 1; j < this.length; ++j) {
            if (this[i] === this[j]) {
                result.push(this[i]);
                j = ++i;
            }           
        }
    }
    return result;
}
// aos.unique() => a,b,c,d
// aos.duplicates() => a