一、常用的数组方法
sort:可以进行数组排序
var a=[1,2,5,4,6,3]
console.log(a.sort()) //1,2,3,4,5,6
console.log(a.sort((a,b)=>b-a)) //6,5,4,3,2,1
Math.max:找最大值
var a=[1,24,4,6,3,5,7]
console.log(Math.max(...a)) //24
console.log(Math.max.apply(this,a)) //24 这里的this也可以换为null
//注意Math.max()的参数不能是数组,参数为字符串
//Math.min()同理
splice:对数组进行增、删除、删除增加
splice是基于数组进行操作的
//删除操作
var a=[1,2,3,5,6,4,7]
console.log(a.splice(2,3)) //3,5,6
console.log(a) //1,2,4,7
//增加操作
let arr = [1,2,3,4,5,6,7,8,9]
/[1, 2, 3, 1, 2, 3, 6, 7, 8, 9]
console.log(arr.splice(3,0,1,2,3)) //[1, 2, 3, 1, 2, 3, 6, 7, 8, 9]
//删除增加
var a=[1,2,3,5,6,4,7]
var b=a.splice(2,3,1,1,1,1)
console.log(a) //1, 2, 1, 1, 1, 1, 4, 7
slice 切割
splice 拼接
split 分离
concat():合并数组
var a=[1,2,3]
var b=[3,2,1]
console.log(a.concat(b)) //[1,2,3,3,2,1]
//这种方式也可以合并数组
console.log(...[1,2,3],...[3,2,1])
每一项设值
一、
[1,2,3].fill(false);
//[false, false, false]
fill是ES6的方法
二、
[1,2,3].map(()=>0);
//[0, 0, 0]
filter过滤
var a=[1,2,3,4,5]
console.log(a.filter((item)=>{return item>4})) //[5]
二、常见数组类型的面试题集合
一、一个数组去掉重复的值
一、es6中的Set方法
var a=[1,1,1,2,3,4]
var b=Array.from(new Set(a))
console.log(b) //[1,2,3,4]
二、indexOf方法
var a=[1,1,1,2,3,4]
var b=[]
for(let i=0; i<a.length; i++){
if(b.indexOf(a[i])==-1){
b.push(a[i])
}
}
console.log(b) //[1,2,3,4]
三、filter方法
var a =[1,1,1,2,3,4]
var b=[]
a.filter((item,index)=>{
if(a.indexOf(item)==index){
b.push(item)
}
})
console.log(b) //[1,2,3,4]
四、forEach方法
var a =[1,1,1,2,3,4]
var b=[]
a.forEach((item,index)=>{
if(a.indexOf(item)==index){
b.push(item)
}
})
console.log(b) //[1,2,3,4]
解释一下,就这种情况而言,foreach和filter实现的效果是一样的,但是两者又有着不一样的区别。
简单的说前者是在原有的数组上进行操作,而filter是生成了一个新数组进行操作。具体可百度
五、sort排序方法
var a =[1,2,1,5,5,5,,2,3,4]
var b=[]
var c=a.sort()
for(let i=0; i<c.length; i++){
if(c[i]!==c[i+1]){
b.push(c[i])
}
}
console.log(b) // [1, 2, 3, 4, 5]
六、利用map去进行去重
如果是面试的话可能会问map与obje的区别
var a =[1,1,1,2,3,4]
var b=[]
var map=new Map()
for(let i=0; i<a.length; i++){
if(map.has(a[i])){
map.set(a[i],true)
}
else{
map.set(a[i],false)
b.push(a[i])
}
}
console.log(b) //[1, 2, 3, 4]
还有很多种方法感兴趣可自己百度
二、字符串统计出现过次数最多的字符,并且输出出现的次数
var a="asjhdjahasfiaj"
var obj={}
var char
for(let i=0; i<a.length; i++){
char=a.charAt(i)
if(obj[char]){
obj[char]++
}
else{
obj[char]=1
}
}
var max=0
var maxChar
for(var key in obj){
if(max<obj[key]){
max=obj[key]
maxChar=key
}
}
console.log(maxChar,max) //a 4
三、数组数字统计出现过最多的数字,输出出现过的次数
var a=[1,1,1,2,2,5,6,4,6,8]
var obj={}
a.forEach((item,index)=>{
if(a.indexOf(item)==index){
obj[item]=1
}
else{
obj[item]++
}
})
var max=0
var maxChar=''
for(let key in obj){
if(max<obj[key]){
max=obj[key]
}
}
for(let i in obj){
if(max==obj[i]){
maxChar=i
}
}
console.log(maxChar,max) // 1 3
这里使用filter也是一样的效果
四、两个数字数组查找一样的值,并且输出
var a=[1,1,1,2,3,4]
var b=[1,1,1,5,6,3]
var c=[]
var map=new Map()
var d=a.concat(b)
for(let i=0; i<d.length; i++){
map.set(d[i],map.has(d[i]))
}
for(let [key,value] of map.entries()){
if(value===true){
c.push(key)
}
}
console.log(c) //[1, 3]