判断是否是数组的方法
- Object.prototype.toString.call(arr);
- arr instanceof Array;
- arr.constructor === Array;
- Array.isArray(arr);
var arr = [1, 3];
var obj = {};
console.log(Object.prototype.toString.call(arr));
console.log(arr instanceof Array);
console.log(arr.constructor === Array);
console.log(Array.isArray(arr));
console.log(Object.prototype.toString.call(obj));
console.log(obj instanceof Array);
console.log(obj.constructor === Array);
console.log(Array.isArray(obj));
数组去重
测试:
let arr = [1, 3, 5, 2, 3, 7, 6, 9, 2];
console.time('dedup');
let dedupArr = arr.dedup();
console.log(dedupArr);
console.timeEnd('dedup');
第一种方法:
Array.prototype.dedup = function () {
return [...new Set(this)]
}
第二种方法:
Array.prototype.dedup = function () {
let arr = [];
let obj = {};
this.forEach(item => {
if (!obj[item]) {
arr.push(item);
obj[item] = 1;
}
})
return arr;
}
第三种方法
Array.prototype.dedup = function () {
let arr = [];
this.forEach(item => {
if (arr.indexOf(item) === -1) {
arr.push(item);
}
})
return arr;
}
第四种方法
Array.prototype.dedup = function () {
let arr = [];
this.forEach((item, index) => {
if (this.indexOf(item) === index) {
arr.push(item);
}
})
return arr;
}
由于数组写的比较简单,所以用时差不多。