Array是js里的内置对象,也是我们最常用的一种,在这里我们整理一下常见的简单算法
1.数组去重
数组去重是面试中经常遇到的笔试题,当然它的解法也很多变,这里介绍简单的两种。
1>es6数组去重
function delete_repeat(arr){
return [new Set(arr)]
}
var arr = [1, 2, 3, 5, 2];
console.log(delete_repeat(arr));
//这里用到的是ES6的set()方法,set直接可以存储不重复的一组key,这个key也可以是对象,字符串等.
2>利用indexof数组去重
function unique1(arr){
var tmpArr = [];
for(var i=0; i<arr.length; i++){
//如果当前数组的第i已经保存进了临时数组,那么跳过,
//否则把当前项push到临时数组里面
if(tmpArr.indexOf(arr[i]) == -1){
tmpArr.push(arr[i]);
}
}
return tmpArr;
}
2.求最大值和最小值
1>最简洁版
var a=[1,2,3,5];
alert(Math.max.apply(null, a));//最大值
alert(Math.min.apply(null, a));//最小值
2>原型方法版
Array.prototype.max = function(){
return Math.max.apply({},this)
}
Array.prototype.min = function(){
return Math.min.apply({},this)
}
[1,2,3].max()// => 3
[1,2,3].min()// => 1
3.数组排序
1>Array的sort()方法——升序
var arr = [23,34,3,4,23,44,333,444];
arr.sort(function(a,b){ return a-b; })
console.log(arr);
2>ES6写法
var sortedArr = arr.sort((a, b) => a < b ? 1 : -1);
console.log(sortedArr);
3>Array的sort()方法——降序
arr.sort(function(a,b){ return b-a; })
4.把两个数组合并,并删除第二个元素
var array1 = ['a','b','c'];
var bArray = ['d','e','f'];
var cArray = array1.concat(bArray);
cArray.splice(1,1);