zoukankan      html  css  js  c++  java
  • 初心不负 笔记-JS高级程序设计-引用类型篇-Array

    ES3方法集合:

    1join()方法,将一个数组里面的所有元素转换成字符串,然后再将他们连接起来返回一个字符串,通过制定的符号,默认值为逗号。不会改变原数组

    var a = [1,2,3,4,5];
    a.join();
    "1,2,3,4,5"
    typeof (a.join());
    "string"
    typeof a
    "object"

    2reverse()方法对数组顺序进行反转,会改变原本的数组

    var a = [1,2,3,4,5];
    a.reverse();
    [5, 4, 3, 2, 1]
    
    a
    [5, 4, 3, 2, 1]

    3sort()方法对数组顺序进行反转,会改变原本的数组。参数是个自定义的函数---

    4concat() 方法用于连接两个或多个参数(数组,字符串等),返回的是一个新的数组。concat并不能递归的展开一个元素为数组的参数

    var a = [1,2,3,4,5],
          b = [6,7],
          c = [8,9,[10,11]];
    a.concat(b);
    [1, 2, 3, 4, 5, 6, 7]
    
    a
    [1, 2, 3, 4, 5]
    
    a.concat(b,c);
    [1, 2, 3, 4, 5, 6, 7, 8, 9, [10,11]]    

    5slice() 方法可从已有的数组中返回指定的一个片段(slice),或者说是子数组,返回的是一个新的数组

    参数a指定开始的位置必填参数b指定结束的位置非必须返回的新数组包含起始位置,不包含结束位置。并且后面的数值必须大于前面,负值的话就加上数组的长度

    var a = [1,2,3,4,5];
    
    a.slice(2)
    [3, 4, 5] //包含起始位置,默认到结尾
    
    a.slice(2,4)
    [3, 4] //不包含结束位置
    
    a.slice(-1,-2) //后面的值必须大于前面
    []
    
    a.slice(-2,-1)//负数的话加上数组长度
    [4]

    6splice() 方法从数组中添加/删除元素,然后返回被删除的元素。它在原数组上修改数组

    参数index,必选,指定开始的位置;number,可选,要删除的数量;item,可选,向数组添加的新元素

    功能1插入:指定开始位置,删除数量为0,新的item

    功能2删除:指定开始位置和删除数量,

    功能3替换:指定开始位置,删除数量为1,新item

    var a = [1,2,3,4,5];
    a.splice(2)
    [3, 4, 5] //包含起始位置
    
    a.splice(5) //超过长度返回空数组
    []
    
    a.splice(1,2); //改变原来数组了
    [2, 3]
    a
    [1, 4, 5]
    
    a.splice(3,2,111,222,[1,2])
    [4, 5]
    a
    [1, 2, 3, 111, 222, [1,2]]

      a.splice(0,1,0)
      a
      [0, 2, 3, 111, 222, [1,2]]

      a.splice(0,0,0)
      a
      [0, 0, 2, 3, 111, 222, [1,2]]

    7栈方法:后进先出

    push() 方法可向数组的末尾添加一个或多个元素,并返回新的长度;

    var a = [1,2,3,4,5];
    
    a.push(7)
    6 //返回值是新数组的长度,
    
    a
    [1, 2, 3, 4, 5, 7] //改变原本数组了

    pop()方法用于删除并返回数组的最后一个元素 

    a.pop()
    7 //返回值是删除的数组项
    a
    [1, 2, 3, 4, 5]

      队列方法:先进先出

    unshift() 方法可向数组的头部添加一个或多个元素,并返回新的长度;

    var a = [1,2,3,4,5];
    
    a.unshift(7)
    6 //返回数组长度
    a
    [7, 1, 2, 3, 4, 5] //改变数组

    shift()方法用于删除并返回数组的第一个元素。如果数组已经为空,则 pop() 不改变数组,并返回 undefined 值

    [7, 1, 2, 3, 4, 5]
    a.shift()
    7 //删除项
    a
    [1, 2, 3, 4, 5]
    
    var b= [];
    
    b.shift()
    undefined  //空数组的话返回值为undefined

    ES5方法集合

    在ES5新增的方法中接受两个参数,第一个参数都是function类型,必选,{currentValue:数组当前项的值;index:数组当前项的索引;array:数组对象}

    第二个参数是当执行回调函数时指向的this(参考对象),不提供默认为window,就是第一个参数里面的this。

    在执行ES5的方法中,原数组中新增加的元素将不会被 callback 访问到;若已经存在的元素被改变或删除了,则它们的传递到 callback 的值是 forEach 方法遍历到它们的那一个索引时的值

    1forEach() 遍历数组的每一项,返回值为undefined。没有办法中止或者跳出 forEach 循环,除了抛出一个异常

    2map() 遍历数组的每一项,callback每次执行后的返回值(没有指定返回值则返回undefined)组合起来形成一个新数组

    3filter() 遍历数组的每一项,并利用所有使得 callback 返回 true 或 等价于 true 的值 的元素创建一个新数组。(功能:数组去重啊)

    4some() 遍历数组的每一项,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some 将会立即返回 true。否则,some 返回 false。some方法可以理解成拥有跳出功能的forEach()函数,所以不一定所有项都遍历哦

    5every() 遍历数组的每一项,直到它找到一个使 callback 返回 false(表示可转换为布尔值 false 的值)的元素。如果发现了一个这样的元素,every 方法将会立即返回 false。否则,callback 为每一个元素返回 true,every 就会返回 true,同上

    6indexOf()使用严格相等(strict equality,即===)进行判断,第一个参数是查找的项,第二个是起始位置(默认是0),首个被找到的元素在数组中的索引位置; 若没有找到则返回 -1

    7lastIndexOf是反向从尾部开始查找,但是返回的索引下标仍然是正向的顺序索引,

    8reduce() 为数组中的每一个元素依次执行回调函数,最后返回一个函数累计处理的结果,reduce的回调函数中的参数与前面的不同,多了第一个参数,是上一次的返回值,(功能:数组求和啊)

    Array.reduce详解//带[]都是表示可选的参数
    Array.reduce(callbak[,initialValue])
    callback携带四个参数{
        accumulator:累加器累加回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue --调用callback函数的返回值
        currentValue:数组中正在处理的元素
        currentIndex:数组中正在处理的当前元素的索引 --可选
        array:调用reduce的数组 --可选
    }
    initialValue --可选 
    用作第一个调用 callback的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错
    (如果没有提供初始值,那么accumulator就是数组第一个元素,currentValue从第二个元素开始)
    const array1 = [1, 2, 3, 4];
    const reducer = (accumulator, currentValue) => accumulator + currentValue;
    
    // 1 + 2 + 3 + 4
    console.log(array1.reduce(reducer));
    {
        accumulator:1->3->6->10
        currentValue:2->3->4
    }

    9isArray() 判断是否是数组;Object.prototype.toString.call([]).slice(8, -1) === "Array";//true

    ES6方法集合 待续...

    不忘初心,不负梦想
  • 相关阅读:
    HTTP协议学习---(三)摘要认证
    HTTP协议学习---(二)基本认证
    HTTP之referer(网上搜集)
    request 和response
    Python开发最常犯错误总结10种
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
    xgqfrms™, xgqfrms® : xgqfrms's offical website of GitHub!
  • 原文地址:https://www.cnblogs.com/panrui1994/p/8715159.html
Copyright © 2011-2022 走看看