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]
    
  • 相关阅读:
    linux 修改运行级别(默认命令行启动)
    数据库循环
    html——黑体、斜体、下划线及删除线
    SQL利用Case When Then Else End多条件判断
    数据库私房菜——(扯淡的三种主流数据库 oracle、sqlserver、mysql)
    Ubuntu linux 各种技术支持(逐步完善中)
    win7(win8)系统下安装SQL2005(SQL Server 2005)图文教程
    linux 配置固定IP
    oracle 技术支持
    简单上手的游戏引擎
  • 原文地址:https://www.cnblogs.com/AFBF/p/14603974.html
Copyright © 2011-2022 走看看