关于一个固定的已知的数组例如:var arr = ['name','OK','123','n','look','777','n','123','name',1,3,5,1,'OK'];
那么问题来了,我们怎么能去掉重复的字符串或者数字,得到新的数组呢!
方法①:
function takeRepetition_1(arr){
var data= {}; //这里会遍历data的arr[i]属性 因为data为空 理所当然返回undefined
var result = [];
for(var i=0;i<arr.length;i++){
if( !json[arr[i]] ){
json[arr[i]] = 1; //所以当if满足!undefined 即为true的时候 给data的arr[i]的属性的值设定为1
result.push( arr[i] ); //然后放入结果数组里 所以当arr数组中有重复的值时 if不满足条件 就不会添加到数组了
}
}
return result;
}
console.log(unqiue(arr));
方法②:
Array.prototype.takeRepetition_2 = function() { //两次循环遍历数组,取值做等比比较
var a = [];
var l = this.length;
for(var i = 0 ;i< l; i++){
for(var j = i + 1 ;j < l; j++) {
if (this[i] === this[j]) {
j = ++i
}
}
a.push(this[i]);
}
return a;
}
console.log(arr.takeRepetition_2());
方法③:
Array.prototype.takeRepetition_3 = function(){
var n = []; //一个新的临时数组
for(var i = 0; i < this.length; i++) { //如果当前数组的第i已经保存进了临时数组,那么跳过,否则把当前项push到临时数组里面
if (n.indexOf(this[i]) == -1) n.push(this[i]);
}
return n;
}
console.log(arr.takeRepetition_3());
好啦 欢迎大家有不同的方法一起讨论哦!~~~~~