一、
利用对象的特性,在一个对象里面同一个属性名不可能出现两次,
Array.prototype.uniqe = function(){
var temp = {},
arr = [],
len = this.length
for(var i = 0;i < len; i++){
if(!temp[this[i]]){
//temp[this[i]] == undefind == false ==>!false == true
//如果这个对象里面没有这个元素的话
temp[this[i]] = 'a';
//就把这个元素填进去,并给个随意属性值a
arr.push(this[i]);
//新数组后面push这个属性名的属性
}
}
return arr;
}
function uniqe(arr){
var temp = {};
var newarr = [];
for(var i = 0;i < arr.length; i++){
if(!temp[arr[i]]){
temp[arr[i]] = 'a';
newarr.push(arr[i]);
}
}
return newarr;
}
找出重复的元素
function duplicates(arr) {
var narr = [];
for (var i = 0; i < arr.length; i++) {
//判断是否是第一次出现,且不是最后一次出现
if (arr.indexOf(arr[i]) == i && arr.lastIndexOf(arr[i]) != i) {
narr.push(arr[i]);
}
}
return narr;
}
function duplicates(arr) {
var narr = [];
// 实际工作中很少会用到for,而且for的语义不够明确
arr.forEach((value, index) => {
if (arr.indexOf(value) === index && arr.lastIndexOf(value !== index)) {
narr.push(value);
}
});
return narr;
网友评论