请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。
程序员文章站
2022-06-11 14:35:52
...
自己写的方法,不太想修改原数组(可能是昨天做数组在线测试题一直不让修改原数组留下的阴影....)
Array.prototype.deleteItem = function(){
var arr1 = new Array();
for(var i = 0 ; i < this.length ; i++){
for(var j = i+1 ; j <= (this.length - i) ; j++){
if (this[i] ==this[j]) {
arr1.push(this[i]);
}
}
}
return arr1;
};
[1,2,3,4,5,5,5,3,1,6].deleteItem();
这是牛客的标准答案:
Array.prototype.distinct = function() {
var ret = [];
for (var i = 0; i < this.length; i++)
{
for (var j = i+1; j < this.length;) {
if (this[i] === this[j]) {
ret.push(this.splice(j, 1)[0]);
} else {
j++;
}
}
}
return ret;
}
//for test
alert(['a','b','c','d','b','a','e'].distinct());
大致的思路都差不多,不同的是答案使用的是splice方法,splice是array中最强大的方法,可以进行插入删除替换的功能(高级js教程P95),代码中splice(j,1)[0],表示在第j位,删除一个项,splice返回被删除的项组成的数组,当前数组中只删除了一个,只有一项,所以是[0]取第一位即为删除的项数。
上一篇: java读取二进制文件数据
下一篇: CSS易混淆知识点