首页 > 试题广场 >

编写请给 Array 本地对象增加一个原型方法,它用于删除数

[问答题]
编写请给 Array 本地对象增加一个原型方法,它用于删除数字数组中重复的数字(可能有多个),返回值是一个包含被删除的重复条目的新数组。
      Array.prototype.respeat = function(){
              var arr = this;
              var arr2 = [];
             for(var i=0; i<arr.length; i++){
                  var index = arr.lastIndexOf(arr[i]);
                  if(index !== -1 && index !== i){
                       if(arr2.indexOf(arr[i]) === -1){
                             arr2.push(arr[i]);
                       }
                      arr.splice(i,1);
                       i--;
                 }
             }
             return arr2;
         }
发表于 2017-07-30 16:22:36 回复(0)
利用ES6特性,一行代码搞定,暴力的同时,效率很高。
Array.prototype.deleteSame = ()=>{return Array.from(new Set(arr))};

下面测试
var arr = [1,2,3,4,1,2,3,4];

console.log(arr.deleteSame());

   输出 [1,2,3,4]
发表于 2017-08-05 10:51:08 回复(5)
Array.prototype.delSame = function(){
    var hash = {};
    return this.filter(function(item){
        if(!hash[item]) hash[item] = 1;
        else hash[item] += 1;
        return hash[item] === 1;
    })
}
发表于 2017-07-29 15:49:54 回复(0)
包含被删除的重复条目的新数组”-----我懵逼了,是返回被删的元素还是删完了之后的数组,我代码写的返回被删除的元素。。。😂
Array.prototype.newArr = function () {
            var arr = this;

            return arr.filter(function (item, index) {
                return arr.indexOf(item, 0) !== index;
            });
        }

发表于 2020-10-09 16:17:59 回复(0)
// 获得去重之后的数组
Array.prototype.noRepeat = function () {
    return [...new Set(this)];
}
// 被删除的重复条目的新数组
Array.prototype.getRepeat = function () {
    let noRepeat = new Set(this.noRepeat());
    return this.filter((x) => {
      !noRepeat.has(x)
    })
}
let arr1 = [1,2,3,4,5,4,3,2];
let arr2 = ['a','b','c','d','e','d','c'];

let arr1_0 = arr1.noRepeat()
let arr1_1 = arr1.getRepeat()

let arr2_0 = arr2.noRepeat()
let arr2_1 = arr2.getRepeat()



发表于 2020-10-15 22:06:46 回复(0)
function noRepeat(arr) {
    return [...new Set(arr)];
    }

发表于 2020-08-28 10:18:49 回复(1)
        Array.prototype.repeat=function(){         let arr=this,arr1=[],obj={};         for(let i=0;i<arr.length;++i){             if(!obj[arr[i]]){                 obj[arr[i]]=true;             }else{                 arr1.push(arr[i]);             }         }         return arr1;     };


发表于 2018-04-01 15:09:31 回复(0)
Array.prototype.delSameNum = function () { 
     var delArr = [], hash = {};
     for (var i = 0; i < this.length; i++) {
         if (typeof this[i] === 'number') { //只删除数字,其他类型重复不删除 
             if (!hash[this[i]]) { 
                 hash[this[i]] = 1; 
             } else { 
                 delArr.push(this.splice(i, 1)[0]);
                 i--; 
             } 
         }
     } 
   return delArr; 
}
编辑于 2018-03-29 16:39:43 回复(0)

Array.prototype.getEasyArr = function(arr) {

const obj = {};

const more = [];

arr.forEach(item => {

    if (obj[item]) {

        more.push(item);

    } else {

       obj[item] = item;

    }

});

return Object.values(obj).concat(more);

}

发表于 2018-03-26 10:35:01 回复(0)
他说的重复是什么意思 无序的重复 还是有序的重复 重复一个值的多次 还是多个值的多次
发表于 2017-11-04 16:15:54 回复(0)
Array.prototype.wipeOf1 = function() {
    return this.filter((val, index) => { return this.indexOf(val) !== -1 && this.indexOf(val) === index});
};
发表于 2017-09-22 19:38:37 回复(0)
Array.prototype.deleDouble = function(){
var arr2 = [];
var arr= this;
for(var i =0 ;i<arr.length;i++){
for(var j = i+1 ;j< arr.length;j++){
if(arr[i] == arr[j]){
var name =arr.splice(j,1);
arr2.push(name[0]);
j--;
}
}
}
return arr2;
}
发表于 2017-09-13 19:28:23 回复(0)
Array.prototype.unique = function(arr){
    var temp = [];
    for(var i=0;i<arr.length;i++){
        for(var j=i+1;j<arr.length;){
            if(arr[i] === arr[j]){
                temp.push(arr.splice(j, 1));
            }
            else{
                j++;
            }
        }
    }
    return temp;
}
发表于 2017-09-10 10:44:15 回复(0)
Array.prototype.deleteSame=function(){
  var arr=this;
  var a=[];
  for (var i=0;i<this.length;i++){
    var index=a.indexOf(arr[i]);
    //console.log(index);
    if(index==-1){
      a.push(arr[i]);
      arr.splice(i,1);//删除后会自动往前移动所以i-1
      i--;
    }
    else{
      continue;
    }
  }
  return a; 
}
var test=[1,2,3,3,4,5,9,3,4,6];
console.log(test.deleteSame());

发表于 2017-08-24 20:21:35 回复(0)
Array.prototype.deleteSame = function(){
  var array = this;
  var arr = [];
  var result = [];
  for(var i = 0; i< array.length;i++){
     if(arr.indexOf(array[i]) === -1){
        arr.push(array[i]);
     }else{
      result.push(array[i]);
     }
  }
  return result;
};
发表于 2017-08-19 11:26:33 回复(0)
Array.prototype.deleteSame = function(){
	let mySet = new Set(), //用集合天然去重
		a = [];
	this.forEach( function(item) {
		if (!mySet.has(item)) {  //没有则加入集合
			mySet.add(item);
		} else {
			a.push(item)  //有则加入数组
		}
	});
	return a;
};

console.log([1,NaN2,1,2, NaN, NaN].deleteSame())  //[1, 2, NaN]  可以去NaN 不能去对象
//哇 缩进搞了我好久

编辑于 2017-08-14 22:44:42 回复(0)
Array.prototype.respeat = function(){
    var a = [];
    var arr = this;
    arr.forEach(function(v,i) {
        if(i !== arr.lastIndexOf(v) && i==arr.indexOf(v)) {
            a.push(v);
        }
    })
    return a;
}

发表于 2017-08-14 21:13:49 回复(0)
Array.prototype.getRepeat = function (){
var newarr = [];
var temp = this;
var repeat = [];
for (var i = 0; i < temp.length; i++){
if (newarr.indexOf(temp[i]) == -1){ //判断是否重复
newarr.push(temp[i]);
}else{
repeat = repeat.concat(temp.splice(i, 1));
i--;
}
}
return repeat;
}

发表于 2017-08-10 16:50:09 回复(0)
Array.prototype.delRepeat=function(){
    vararr=this;
    varres=[];
    vararray=[];
    for(vari=0;i<arr.length;i++){
        if(res.indexOf(arr[i])!=-1){
            array.push(arr[i])
            arr.splice(i,1);
            i--;
        }else{
            res.push(arr[i])
        }
    }
    returnres;
}
发表于 2017-08-04 21:07:12 回复(0)

return Array.from(new Set(this));

发表于 2017-07-30 16:09:17 回复(0)