在jQuery/javascript中返回数组中的所有重复值

在jQuery/javascript中返回数组中的所有重复值,javascript,algorithm,native-code,Javascript,Algorithm,Native Code,是否有一种技术或简单的方法可以返回所有重复的值,如果可能,还可以返回它们的索引。还有唯一的,以及它们的指数。我怎样才能做到这一点? 可以使用对象,也可以不使用对象 前 我宁愿把这当作一个算法问题,而不是javascript问题 您可以尝试先对数组进行排序,然后很容易找到一个On算法来找出所有副本以及每个副本上的副本数 然后,您可以使用找到的重复项搜索原始数组,以确定重复项的原始索引。我相信这符合您的要求,尽管输出与您的示例预期不同,因此可能不是,但我无法与您尝试的结果进行比较,您能澄清吗 Jav

是否有一种技术或简单的方法可以返回所有重复的值,如果可能,还可以返回它们的索引。还有唯一的,以及它们的指数。我怎样才能做到这一点? 可以使用对象,也可以不使用对象


我宁愿把这当作一个算法问题,而不是javascript问题

您可以尝试先对数组进行排序,然后很容易找到一个On算法来找出所有副本以及每个副本上的副本数


然后,您可以使用找到的重复项搜索原始数组,以确定重复项的原始索引。

我相信这符合您的要求,尽管输出与您的示例预期不同,因此可能不是,但我无法与您尝试的结果进行比较,您能澄清吗

Javascript

function getUniqueAndduplicatesWithIndicies(array) {
    return array.reduce(function (acc, curr, index, arr) {
        if (acc.duplicates.values.indexOf(curr) !== -1 || arr.lastIndexOf(curr) !== index) {
            acc.duplicates.values.push(curr);
            acc.duplicates.indicies.push(index);
        } else {
            acc.unique.values.push(curr);
            acc.unique.indicies.push(index);
        }

        return acc;
    }, {
        unique: {
            values: [],
            indicies: []
        },
        duplicates: {
            values: [],
            indicies: []
        }
    });
}

var setOfValues = [1, 2, 2, 2, 3, 3, 4, 4, 4, 5, 10, 10, 9, 10, 8, 4, 11];

console.log(JSON.stringify(getUniqueAndduplicatesWithIndicies(setOfValues)));
输出

{
    "unique":{
        "values":[1,5,9,8,11],
        "indicies":[0,9,12,14,16]
    },
    "duplicates":{
        "values":[2,2,2,3,3,4,4,4,10,10,10,4],
        "indicies":[1,2,3,4,5,6,7,8,10,11,13,15]
    }
} 

上,你试过什么吗?是的,我已经试过了,但似乎需要,深度算法O。O,请帮助!你能把你试过的贴出来吗?或者在这里发布代码Sir是不相关的,因为值不完全或不接近它。我只是想知道是否有一个简单的方法可以得到我想要的。感谢你的回答:哦!对不起,先生,我是新来的,有没有办法更改类别或标题?您可以编辑您的原始帖子,然后向下滚动到底部添加另一个标签,只是为了吸引更多的人为您提供答案,然而,你的问题并不大,所以我认为你的主要帖子中的评论与其他问题有很好的链接。或者你可以试着自己实施我的建议。谢谢你,先生!是同一个人,先生!最后我忘了10号和4号。非常感谢。我猜在算法方面真的有一个天才!如果有人解释代码是如何以这种方式工作的,我也可以学习和改进!我能当你的学徒吗Dhmmmm,如果值集合中的每个值都来自Obj呢?或者让我换一种说法。如果在getUniqueAndduplicatesWithIndicies上传递的参数是一个对象呢?如果可以比较数组中的值是否相等,那么它就工作了,因为NaN!==楠。代码很简单,你不懂什么?在保留累加器的同时逐步检查所有值。如果当前值与已存在重复项的值匹配,或者当前值在被测试的数组中具有另一个具有不同索引的值,则该值是重复的,因此以重复项存储值和索引。否则它是唯一的,所以将值和索引存储在unique中。
{
    "unique":{
        "values":[1,5,9,8,11],
        "indicies":[0,9,12,14,16]
    },
    "duplicates":{
        "values":[2,2,2,3,3,4,4,4,10,10,10,4],
        "indicies":[1,2,3,4,5,6,7,8,10,11,13,15]
    }
}