zoukankan      html  css  js  c++  java
  • 对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]
    
  • 相关阅读:
    Java实现 蓝桥杯VIP 算法提高 阮小二买彩票
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 传染病控制
    Java实现 蓝桥杯VIP 算法提高 企业奖金发放
    Java实现 蓝桥杯VIP 算法提高 企业奖金发放
    让程序后台隐藏运行
    只要你喜欢,并且可以养家糊口,就是好的
  • 原文地址:https://www.cnblogs.com/AFBF/p/14603974.html
Copyright © 2011-2022 走看看