这道题目中要求的是在 Array
本地对象增加一个原型方法,它用于删除数字数组中重复的数字(可能有多个),返回值是一个包含被删除的重复条目的新数组.
所以在做这道题目之前我们先要理解JavaScript 中 原型
和 原型对象
,如果还有不清楚的情戳下方链接了解哦>_<
https://blog.youkuaiyun.com/lhrdlp/article/details/106259275
既然是和数组去重相关的题目,我们就先来看普通的数据去重是怎样做的???
看下面的代码:
function fun(arr) {
let length = arr.length;
arr.forEach(function(index,item){
for(let i = index + 1 ; i < length ; i++) {
if(item == arr[i]) {
arr.splice(i,1);
// i--
}
}
})
return arr;
}
这就是一个简单的数据去重的函数,他可以去重数组中重复的项,但是我们并没有将它添加到 Array
本地对象的原型上面.
给Array
对象增加原型方法的基本操作如下:
Array.prototype.fun = function() {
}
给数组的原型上添加了 fun
方法.
注意题目,这并不是一道简单的数组去重的题目,它用于删除数字数组中重复的数字(可能有多个),返回值是一个包含被删除的重复条目的新数组.
所以我们需要一个空数组来保存被删除的重复条目.
示例代码如下:
Array.prototype.distinct = function(){
//定义存储删除项目的数组
let result = new Array;
for(var i = 0 ; i < this.length ; i++) {
for(var j = i+1; j < this.length;j++) {
if(this[i] == this[j]) {
//先将重复的项目在原数组中删除,然后将它存入result数组
result.push(this.splice(j,1));
j--;
}
}
}
return result;
}
我们通过打印 Array.prototype
来观察我们是不是已经成功添加了 distinct
方法:
可以看到我们的distinct
方法已经成功添加.
我们就可以调用它,观察一下结果:
let arr = [0,0,0,1,2,3,2,1,2,3,4];
console.log(arr.distinct());
打印的结果如下:
里面存储的就是重复的被删除的数组条目.