数组去重
使用Set
var arr = [1, 1, 'a', 'a'];
var set = new Set(arr);
console.log(Array.from(set))
使用Map
var map = new Map();
arr.forEach(item => {
map.set(item)
})
console.log(Array.from(map.keys()))
利用对象键值唯一
var arr = [1, 1, 'a', 'a'];
var obj = {}
for (const value of arr) {
obj[value] = value;
}
console.log(Object.keys(obj))
使用双重for循环
var arr = [1, 1, 'a', 'a'];
for (let i = 0; i < arr.length; i++) {
for(let j = 0; j < arr.length; j++){
if(i != j && arr[i] === arr[j]){
arr.splice(j, 1);
j--
}
}
}
使用indexOf()
var arr = [1, 1, 'a', 'a'];
var arr2 = [];
for (let i = 0; i < arr.length; i++) {
if(arr2.indexOf(arr[i]) === -1){
arr2.push(arr[i])
}
}
console.log(arr2)
使用filter()
var arr = [1, 1, 'a', 'a'];
let newArr = arr.filter((item, index) => arr.indexOf(item) === index);
console.log(newArr)
重写数组方法
push()
Array.prototype.myPush = function(){
for (let index = 0; index < arguments.length; index++) {
this[this.length] = arguments[index]
}
return this.length
}
unshift()
Array.prototype.myUnShift = function(){
var len = this.length + arguments.length;
for (let index = len; index > 0; index--) {
if(index > arguments.length){
this[index - 1] = this[index - arguments.length - 1];
}else{
this[index - 1] = arguments[index - 1];
}
}
return this.length;
}
pop()
Array.prototype.myPop = function(){
const value = this[this.length - 1];
this.length--;
return value;
}
shift()
Array.prototype.myShift = function(){
const value = this[0];
for (let index = 0; index < this.length - 1; index++) {
this[index] = this[index + 1];
}
this.length--;
return value
}
reverse()
Array.prototype.myReverse = function(){
var last = this.length - 1;
for(var i = 0; i < this.length; i++){
var temp = this[i];
this[i] = this[last];
this[last] = temp;
if(i === last || last - i === 1){
break;
}
last--;
}
return this;
}
排序
冒泡排序
var arr = [1,2,3,4, 5, 6, 7, 8];
var arr1 = [1,32,45,65,6, 4, 63,754]
for(var i = 0; i < arr1.length - 1; i++){
for(var j = 0; j < arr1.length - i - 1; j++){
if(arr1[j] > arr1[j+1]){
var temp = arr1[j]
arr1[j] = arr1[j+1];
arr1[j+1] = temp;
}
}
}
其它
将一个有序数组乱序返回
var arr = [1, 2, 3, 4, 5, 6];
arr.sort(function(){
return Math.random() - 0.5;
});
类数组操作
var obj = {
'1' : 'a',
'2' : 'b',
'3' : 'c',
'length' : 3,
'push' : Array.prototype.push
}
obj.push('d');
obj.push('e');
console.log(obj.length);
console.log(obj);