• arrray相关随笔


    ### 数组系统复习

    # 记得面试时候很多都喜欢问js基础的东西,问到最多的也就数组操作,工作中操作数据不过也就字符串、数组、json对象,今天借这个空闲时间再回顾一下数组相关的东西,其它两个有空再整理复习。

    '参考链接:https://www.w3school.com.cn/jsref/jsref_obj_array.asp'

    - 数组构造方法:

      

    //作为内置对象,肯定可以直接new一个
    new Array();
    new Array(size);
    new Array(element0, element1, ..., elementn);
    
    //json对象转数组 必须写length并且格式也得必须这样 没什么卵用
    let arrayLike = {
        0: 'name', 
        1: 'age',
        2: 'sex',
        3: ['苹果','橘子','香蕉'],
        'length': '4'
    }
    let arr = Array.from(arrayLike)
    console.log(arr) // ['name','age','sex',['苹果','橘子',香蕉']]
    
    //跟set相互转换
    let arr = [12,45,97,9797,564,134,45642]
    let set = new Set(arr)
    console.log(Array.from(set))  // [ 12, 45, 97, 9797, 564, 134, 45642 ]
    
    //字符串转数组
    let str = 'hello'
    let arr = Array.from(str)
    console.log(arr);//[h,e,l,l,o]
    
    //还有切割字符串成数组,那属于字符串里边的方法了

    -Array对象的方法

    //concat() 连接两个或更多的数组,并返回结果。
    let arr1 = [1,2,3]
    let arr2 = [3,4,5]
    let arrs = arr1.concat(arr2)
    console.log(arr1)//[1,2,3]
    console.log(arr2)//[3,4,5]
    console.log(arrs)//[1,2,3,3,4,5]

    //join()    把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
    let arr1 = [1,2,3]
    let str = arr1.join(',')
    console.log(str)//'1,2,3'

    pop()    删除并返回数组的最后一个元素
    let arr1 = [1,2,3]
    let str = arr1.pop()
    console.log(arr1)//[1,2]
    console.log(str)//3

    //push()    向数组的末尾添加一个或更多元素,并返回新的长度。
    let arr1 = [1,2,3]
    let str = arr1.push(6)
    console.log(arr1)//[1,2,3,6]
    console.log(str)//4

    //reverse()    颠倒数组中元素的顺序。
    
    //shift()    删除并返回数组的第一个元素
    let arr1 = [1,2,3]
    let str = arr1.shift()
    console.log(arr1)//[2,3]
    console.log(str)//1
    
    /*slice()    从某个已有的数组返回选定的元素
    arrayObject.slice(start,end) 
    start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
    end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
    */
    let arr1 = [1,2,3,4,5,6,7,8,9]
    let str = arr1.slice(1)
    console.log(arr1)//[1,2,3,4,5,6,7,8,9]
    console.log(str)//[2,3,4,5,6,7,8,9]
    
    let str2 = arr1.slice(1,4)
    console.log(arr1)//[1,2,3,4,5,6,7,8,9]
    console.log(str2)//[2,3,4]//老规矩 包头不包尾
    
    let str3 = arr1.slice(-5,-1)
    console.log(arr1)//[1,2,3,4,5,6,7,8,9]
    console.log(str3)//[5,6,7,8]//老规矩 包头不包尾

    //sort()    对数组的元素进行排序  可接收一个参数,参数必须是函数
    
    let arr1 = [6,2,3,'a',2,'z','r']
    let str = arr1.sort()
    console.log(arr1)//[2, 2, 3, 6, "a", "r", "z"]
    console.log(str)//[2, 2, 3, 6, "a", "r", "z"]

    //splice()    向/从数组中添加/删除项目,然后返回被删除的项目。
    //语法:arrayObject.splice(index,howmany,item1,.....,itemX)
    //index    必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
    //howmany    必需。要删除的项目数量。如果设置为 0,则不会删除项目。
    //item1, ..., itemX    可选。向数组添加的新项目。
    //返回Array    包含被删除项目的新数组,如果有的话。
    
    //1.指定位置插入元素
    var arr = new Array(6)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    arr[3] = "James"
    arr[4] = "Adrew"
    arr[5] = "Martin"
    
    document.write(arr + "<br />")
    arr.splice(2,0,"William")
    document.write(arr + "<br />")
    
    //George,John,Thomas,James,Adrew,Martin
    //George,John,William,Thomas,James,Adrew,Martin
    
    //在第二个元素后边插入‘William’
    
    //2.替换第二个元素
    var arr = new Array(6)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    arr[3] = "James"
    arr[4] = "Adrew"
    arr[5] = "Martin"
    
    document.write(arr + "<br />")
    arr.splice(2,1,"William")
    document.write(arr + "<br />")
    //George,John,Thomas,James,Adrew,Martin
    //George,John,William,James,Adrew,Martin
    
    //可见 ‘Thomas’被替换为‘William’
    
    //3.再看一个 然后总结一下
    var arr = new Array(6)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    arr[3] = "James"
    arr[4] = "Adrew"
    arr[5] = "Martin"
    
    document.write(arr + "<br />")
    arr.splice(2,3,"William")
    document.write(arr)
    //George,John,Thomas,James,Adrew,Martin
    //George,John,William,Martin
    //可见 ‘Thomas,James,Adrew’被删除 替换成了‘William’
    
    //来总结一下  第一个参数就是指定咱从哪里开始整,第二个参数就是  要干掉几个 ,第三个参数就是干掉后在这插入什么
    
    //arg1我试了下 不能用负数,写个负数就相当于写了个0;第二个也一样;那第三个参数能写个数组放进去吗?答案是yes
    var arr = new Array(6)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    arr[3] = "James"
    arr[4] = "Adrew"
    arr[5] = "Martin"
    
    document.write(arr + "<br />")
    arr.splice(2,3,["William","jeck"])
    document.write(arr + "<br />")
    //George,John,Thomas,James,Adrew,Martin
    //George,John,William,jeck,Martin
    
    
    ////===请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改

    //toString() 方法可把数组转换为字符串,并返回结果。
    //返回值与没有参数的 join() 方法返回的字符串相同。
    
    var arr = new Array(3)
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    
    document.write(arr.toString())
    //George,John,Thomas

    //unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
    
    var arr = new Array()
    arr[0] = "George"
    arr[1] = "John"
    arr[2] = "Thomas"
    
    document.write(arr + "<br />")
    document.write(arr.unshift("William") + "<br />")
    document.write(arr)
    
    George,John,Thomas
    4
    William,George,John,Thomas


    这就是数组常用的方法,基础的东西时不时的复习一下掌握牢固了,还是很重要的;以后再想到关于数组的用法在更新。

    es6新增了不少有用的属性方法

      1.扩展运算符,就是三个点点 ...

    console.log(1, ...[2, 3, 4], 5)
    // 1 2 3 4 5


    //用法
    function push(array, ...items) {
      array.push(...items);
    }
    
    function add(x, y) {
      return x + y;
    }
    
    const numbers = [4, 38];
    add(...numbers) // 42
     

      2.复制数组

    let arr = [1,2,3]
    let brr = arr
    
    arr[0] = 4
    
    console.log(brr)//[4,2,3]
    
    //这是因为arr赋值给brr只是指针指向了那个数组,更改后其实brr和arr指向的还是同一个数组,就是说这样复制后在内存中还是一个数组,只不过是两个名字而已
    
    let a = [1,2,3]
    let b = [...a]
    
    a[0] = 4
    
    console.log(b)//[1,2,3]
    
    //这样就相当于重新建一个数组,并给他赋值为 1,2,3;这时候再改变a数组就和b数组没啥关系了;

      3.合并数组

    let {a,b,c} = {a:[1,2],b:[3,4],c:[5,6]}
    
    //es5时候得用concat方法
    //用es6怎么写呢
    
    let d = [...a,...b,...c]
    
    //这样就ok了

      4.Array.fo(arg)//将一组值转化为数组 是用来替代 new Array()的

      5.copyWithin复制数组指定位置的元素  第一个参数必传

    copyWithin(target, start = 0, end = this.length)

      6.数组的find() 和 findIndex() 方法
    [1, 5, 10, 15].find(function(value, index, arr) {
      return value > 9;
    }) // 10
    
    
    [1, 5, 10, 15].findIndex(function(value, index, arr) {
      return value > 9;
    }) // 2

      7.数组的fill()方法,用指定的元素填充数组,多用于初始化数组

    ['a', 'b', 'c'].fill(7, 1, 2)//用7填充  填充开始位置为1结束位置为2
    // ['a', 7, 'c']

      

      8.数组的keys() values() entries()方法  遍历时候就省事多了

      9.数组的includes()方法  判断数组是否包含某个元素

      10.数组的 flat() faltMap()方法 第一个是拉平数组  第二个是拉平时候执行一下map函数

     




  • 相关阅读:
    POJ 1113 Wall
    POJ 3525 Most Distant Point from the Sea
    POJ 3335 Rotating Scoreboard
    POJ 1228 Grandpa's Estate
    POJ 1873 The Fortified Forest
    POJ 2354 Titanic
    POJ 3130 How I Mathematician Wonder What You Are!
    POJ 1106 Transmitters
    POJ 1474 Video Surveillance
    seajs 的研究一 无题
  • 原文地址:https://www.cnblogs.com/rainbowLover/p/12792766.html
Copyright © 2020-2023  润新知