牛客网前端编程:找出数组 arr 中重复出现过的元素

//方法一:利用索引判断是否重复(使用了两次)
        function duplicates(arr) {
            var arr1 = [];
            arr.forEach(function (ele) {
                //判断原数组是否有重复数据
                //判断结果数组是否已经具有该数据
                if (arr.indexOf(ele) != arr.lastIndexOf(ele) && arr1.indexOf(ele) == -1){
                    arr1.push(ele);
                }
            });
            return arr1;
        }
     //方法二:先判断数组中元素出现的次数,如果大于1并且结果数组之前无此元素,则将这个元素放到结果数组中
        function dup(arr) {
            var b = [];
            var result = [];
            for (var i= 0; i<arr.length; i++){
                 b[i] = arr.reduce(function (init,curr) {
                    //如果当前置等于item,该函数值加一
                    return curr === arr[i] ? init+1:init;
                },0)
                if (b[i] > 1 && result.indexOf(arr[i]) === -1){
                    result.push(arr[i]);
                }
            }
            return result;
        }
    //方法三:先进行排序,然后判断排序之后的前一个数据是否等于后一个数据,如果是且结果数组没有这个元素,则将该元素加入结果数组
        function duplicates1(arr) {
            var a = arr.sort();
            var result = [];
            for (var i = 0;i<arr.length; i++){
                if (arr[i]===arr[i+1] && result.indexOf(arr[i]) == -1){
                    result.push(arr[i]);
                }
            }
            return result;
        }

 

posted @ 2019-07-26 14:31  紫色,风铃  阅读(1821)  评论(0编辑  收藏  举报