对js数组方法的部分了解以及面试内容

一、常用的数组方法

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]
posted @ 2021-03-31 21:52  啊方不方  阅读(96)  评论(0)    收藏  举报