JavaScript Array知识点整理

介绍:本文章整理常用的(包含Es6的map、forEach、every、some、filter、find、from、of等)数组操作方法

会改变原始阵列push()、pop()、shift()、unshift()、reverse()、splice()、sort()、copyWithin()、fill()
回传阵列元素咨询或索引值length、indexOf()、lastIndexOf()、find()、findIndex()、filter()
针对每一个元素处理forEache
产生新的阵列或新的值join()、concat()、slice()、map()、reduce()、reduceRight()、flat()、flatMap()、Array.from()、Array.of()、toString()
判断并回转布尔值every()、some()、includes()、Array.isArray()
其他用法keys()、valueOf()

  1. push()

    1.  可以将某些值加入到阵列的最后一个位置,不限制添加数量,欲添加的内容使用逗号隔开即可,加入阵列长度会增加

    2. 使用 push() 后会改变原本的阵列内容  

        let pushArray = [1,2,3];
        pushArray.push(4,5,6,7);
        console.log(pushArray); // array(1,2,3,4,5,6,7)
  2. pop()

    1. pop 会移除(取出)阵列的最后一个元素

    2. 使用 pop() 后会改变原本的阵列内容

        let popArray = [1,2,3,4];
        let result = popArray.pop();
        console.log(popArray) // array(1,2,3)
        console.log(result) // 4
  3. shift()、unshift()

    1. shift()会移除(取出)阵列的第一个元素
    2. 使用shift() 后会改变原本的阵列内容

        let shiftArray = [1,2,3,4];
        let result = shiftArray.shift();
        console.log(shiftArray) // array(2,3,4)
        console.log(result) // 1
    1. unshift() 会将指定的元素添加到第一个位置

    2. 使用nushift() 后会改变原本的阵列内容

        let unshiftArray = [1,2,3,4,5];
        unshiftArray.unshift(100,200);
        console.log(unshiftArray) //  [100, 200, 1, 2, 3, 4, 5]
  4. reverse()

    1. reverse 会将阵列反转
    2. 使用push 后会改变原本的阵列内容

        let reverseArray = [1,2,3,4];
        reverseArray.reverse();
        console.log(reverseArray) // [4, 3, 2, 1]
  5. splice()

    1. splice() 可以转移或新增阵列的元素,它包含了三个参数,第一个是要移除或要添加的序列号(必填),第二个是要移除的长度(选填,若不填则第一个号码位置后方所有袁术都会被移除,若设定为0,则不会元素被移除),第三个是要添加内容(选填)
    2. 使用splice() 后会改变原本的阵列内容,注意第一个参数是取下标(如:取第一个,则是0)

        let spliceArray = [1,2,3,4,5,6,7,8];
        spliceArray.splice(2,1);
        console.log(spliceArray) // [1,2,4]
    
        // 设定第三个参数就能够添加或取代元素
        spliceArray.splice(2,1,100);
        console.log(spliceArray) // [1,2,100]
    
        //设定第三个参数就能添加或取代元素
        spliceArray.splice(3,2,100,200);
        console.log(spliceArray) // [1, 2, 100, 100, 200, 7, 8]
        spliceArray.splice(4,0,400);
        console.log(spliceArray) // [1, 2, 100, 100, 400, 200, 7, 8]
  6. sort()

    1. sort() 可以针对阵列的元素进行排序,里头包含了一个排序用的判断函式,函式内必须包含两个参数,这两个参数分别代表阵列里第n个和第n+1个元素,透过比较第n和第n+1个元素的大小来进行排序
    2. 使用 sort() 后会改变原本的阵列内容

        let sortArray =  [1,3,8,4,5,7,6,2,9,10,11];
        sortArray.sort((x,y)=>y-x);
        console.log(sortArray) //  [11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
        sortArray.sort((x,y)=>x-y);
        console.log(sortArray) // [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
    
        // 如果不使用判断函式,预设会将元素转换成字符串。
        // 并采用unicode 来判断,这也会造成某些数字的排序错误
        sortArray.sort();
        console.log(sortArray) // [1, 10, 11, 2, 3, 4, 5, 6, 7, 8, 9]
  7. copyWithin()

    1. copyWithin() 能复制阵列中的某些元素,并将它们放到并取同一个阵列指定的位置,copyWithin() 有三个参数,第一个是要置换的位置(必须),第二给是从什么位置开始复制(选填,预设0),第三给是停止复制的元素的前一个位置(选填,预设等于阵列长度)
    2. 使用 copyWithin() 后会改变原本的阵列内容

        let copyWithinArray = [1,2,3,4,5,6,7,8];
        copyWithinArray.copyWithin(3,1,5); 
        console.log(copyWithinArray) // [1, 2, 3, 2, 3, 4, 5, 8]
  8. fill()

    1. fill() 会把阵列中所有元素,置换为指定的值,fill() 有三个参数,第一个是准备要置换的内容(必填),第二个是从什么位置置换(选填,不设定就全部置换),第三个是停止置换的元素的前一个位置(选填,预设等于阵列长度)。
    2. 使用 fill() 会改变原本的阵列内容

        let fillArray = [1,2,3,4,5,6,7];
        fillArray.fill('z');
        console.log(fillArray); // ["z", "z", "z", "z", "z", "z", "z"]
        
        fillArray.fill('b',3,5);
        console.log(fillArray) // ["z", "z", "z", "b", "b", "z", "z"]
  9. lenght

    length() 可以取得阵列的长度(所有元素的数量)

        let lenghtArray = [1,2,3,4,5,6,7];
        console.log(lenghtArray.length) // 7
  10. indexOf()

    indexOf() 会判断阵列中是否包含某个值,判断的方式为【由左而右】,如果有包含就回传这个值在阵列中的索引值,如果没有就回传-1,有两个参数,第一个参数表示要判断的值(必填),第二个参数表示从阵列的哪个位置开始判断(选填,预设为0);

        let indexOfArray = [1,2,3,4,5,6,7];
        console.log(indexOfArray.indexOf(4)); // 3
        console.log(indexOfArray.indexOf(4,5)); // -1 搜索到5,6,7,8;没有4
    
  11. lastIndexOf()

    lastIndexOf() 会判断阵列中是否包含某个值,判断的方式为「由右而左」,如果有包含就回传这个值在阵列中的索引值,如果没有就回传-1,有两个参数,第一个参数表示要判断的值( 必填),第二个参数表示判断到阵列的哪个位置( 选填,预设为整个阵列长度- 1 )。

        let lastIndexOfArray = [1,2,3,4,5,6,7];
        console.log(lastIndexOfArray.lastIndexOf(3)) // 2
        console.log(lastIndexOfArray.lastIndexOf(3,1)) // -1 只判断1,2;所以没有3
    
  12. find()

    find() 会将阵列中的【每一个】元素带入指定的函式内做判断,并会回传一个符合判断条件的元素,如果没有元素符号则会回传undefiend

    let findArray = [1,2,3,4,5,6,7,8];
    console.log(findArray.find(e=>e > 3)); // 4
    console.log(findArray.find(e=>e < 0)); // undefined
  13. finIndex()

    findIndex() 会将阵列中的【每一个】袁术带入指定的函式内做判断,并会回传第一个符合判断条件元素的位置号码,如果没有元素符号则会回传 -1

    let findIndexArray = [1,2,3,4,5,6,7];
    console.log(findIndexArray.findIndex(e=>e > 3)); // 3
    console.log(findIndexArray.findIndex(e =>e < 0)); // -1
    
  14. filter()

    filter() 会将阵列中的每一个元素带入指定的函式内做判断,如果元素符号判断条件则会传出,成为一个新的阵列元素

        let filterArray = [1,2,3,4,5,6,7];
        console.log(filterArray.filter(e=>e > 3)); // [4, 5, 6, 7]
        console.log(filterArray.filter(e=>e%2 == 0)); // [2, 4, 6]
    
  15. forEach()

    forEach() 会将阵列中每一个元素套用到指定的函式里进行运算,函式有三个参数,第一个参数表示每个元素的值(必填),第二个参数为该元素的索引值(选填),第二个参数则表示原本的阵列(选填);

        let forEachArray = [1,2,3,4,5];
        let index = 0;
        forEachArray.forEach(item=>{
            index += item
        })
        console.log(index) // 15
    
        // 如果透过第二和第三给参数搭配,就能做到改变原本阵列的效果
        forEachArray.forEach((item,index,arr)=>[
            arr[index] = item * 10
        ]);
        console.log(forEachArray) // [10, 20, 30, 40, 50]
  16. join()

    join()可以将阵列中所有的元素,由指定的字符合并在一起变成字符串呈现,若没有指定字符预设会用【逗号】合并

        let joinArray = [1, 2, 3, 4, 5, 6, 7];
        console.log(joinArray.join()) // 1,2,3,4,5,6,7
        console.log(joinArray.join('')) // 1234567
        console.log(joinArray.join('@')) // 1@2@3@4@5@6@7
    
  17. concat()

    可以将两个阵列合并在一起,如果是使用es6 语法也可以用扩展运算符...来代替

        let joinConcatOne = [1, 2, 3, 4, 5, 6];
        let joinConcatTwo = [6, 7, 8, 9];
    
        let joinConcatThree = joinConcatOne.concat(joinConcatTwo);
        let joinConcatFour = [...joinConcatOne, ...joinConcatTwo];
    
        console.log(joinConcatThree) // [1, 2, 3, 4, 5, 6, 6, 7, 8, 9]
        console.log(joinConcatFour)  // [1, 2, 3, 4, 5, 6, 6, 7, 8, 9]
    
  18. slice()

    slice() 可以截取出阵列某部份的元素为一个新的阵列,有两个必填的参数,第一个是起始位置,第二个是结束位置(操作时数字减1)

        let sliceArray = [1, 2, 3, 4, 5, 6, 7];
        console.log(sliceArray.slice(2, 4)) // [3,4]
    
  19. map()

    ​​​​​ 会处理阵列中每个元素,最后回传出一个新的阵列,里头有一个函式(必填)和一个回传函式里的this参数(选填),函式内又包含三个参数,第一个是每一个元素的值(必填),第二个是当前元素的索引值(选填),第三个是前的阵列(选填)

        let mapArray = [1, 2, 3, 4, 5, 6, 7];
        console.log(mapArray.map(e => {
            return e + 10
        })) // [11, 12, 13, 14, 15, 16, 17]
    
        // 套用第二个和第三个参数变化
        console.log(mapArray.map((e, i, arr) => {
            return `${e}${i}${mapArray.find(t => t % 5 == 1)}`
        })) // ["101", "211", "321", "431", "541", "651", "761"]
    
        // 如果要使用回传函式里this的参数,则【不能使用】箭头函式,因为箭头函数的this指向和函数的this指向不同,所以要用一般的函数处理
        console.log(mapArray.map(function(e){
            return e + this;
        },10)) //[11, 12, 13, 14, 15, 16, 17]
  20. reduce()

    可以将阵列中的每一个元素进行计算,每次计算的结果会再与下个元素作计算,直到结束为止,里头包含一个函数(必填)和初始计算的数值

        console.log(reduceArray.reduce(function(total,e){
            console.log(total , e)
            return total + e;
        })) // 36
    
        // reduceRight() 和 reduce() 大同小异,只是其计算方式是由右到左,对于加法来说没什么影响,但对于减法而言就有差异
        console.log(reduceArray.reduce(function(total,e){
            return total - e
        })) // -34
        console.log(reduceArray.reduceRight(function(total,e){
            return total - e
        })) // -20
  21. flat()

        let flatArray = [1,2,[3],[4,[5,[6]]]];
        console.log(flatArray.flat()) // [1,2,[3],[4,[5,[6]]]]
        console.log(flatArray.flat(2)) // [1, 2, 3, 4, 5, [6]]
        console.log(flatArray.flat(Infinity)) // [1, 2, 3, 4, 5, 6]
    

    flat() 可以将一个多维阵列的深度传成一维(扁平化),它有一个选填的参数,代表要转换的深度数字,预设为1,如果深度有多层,可以使用infinity来全部展开成一维阵列

  22. flatMap()

    flatMap() 的方法等于map() 和 flat() 的组合,在运算直接将阵列扁平化处理

        let flatMapArray = [1,2,[3],[4,5]];
        console.log(flatMapArray.flatMap(e=>e + 1)); // [2, 3, "31", "4,51"]
        console.log(flatMapArray.map(e=>e + 1).flat()); // [2, 3, "31", "4,51"]
  23. array.isArray()

    array.isArray() 能判断一个物件是否为阵列,如果是就回传true,不然就回传false

        let a = [1, 2, 3, 45], b = 1234, c = 'hello', d = { d1: 1, d2: 2 };
        console.log(Array.isArray(a)) // true
        console.log(Array.isArray(b)) // false
        console.log(Array.isArray(c)) // false
        console.log(Array.isArray(d)) // false
  24.  Array.from()

    Array.from() 会将【类阵列物件】或是【可迭代的物件】转换成阵列。Array.from() 有两个参数,第一个参数为【类阵列物件】或【可迭代的物件】(必填),第二个参数则是改变转换成阵列元素的函数(选填)

        let fromArray = 'abcdef';
        console.log(Array.from(fromArray)); // ["a", "b", "c", "d", "e", "f"]
    
        console.log(Array.from(fromArray, e => e + e)) // ["aa", "bb", "cc", "dd", "ee", "ff"]
    
      // 类阵列物件写法必须包含length属性,且物件key 须为0开始的数字,对应转换后的元素索引
        let from = {
            '0': 14,
            '2': 12,
            '5': 34,
            '3': 3,
            '1': 1,
            '4': 4,
            length: 5
        };
        console.log(Array.from(from)) // [14, 1, 12, 3, 4]
    
  25. array.of

    array.of 可以快速将数字、字符串内容,转换成阵列

        console.log(Array.of(1, 'a', 2, 'b', 3)) // [1, "a", 2, "b", 3]
    
  26. toString()

    toString() 会把整个阵列转换成为文字

        let stringData = [1, 2, 3, 4, 5, 6, 7];
        console.log(stringData.toString())
    
  27. every()

    every() 会将阵列中的每一个元素带入指定的函数内做判断,只要有任何一个元素不符合判断条件,会回false,如果全部符号,就会回传true

        let everyArray = [1, 2, 3, 4, 5, 6];
        console.log(everyArray.every(e => e > 3)); //false (因为1、2小于3,3等于3)
        console.log(everyArray.every(e => e > 0)); //true
    
  28. some()

    会将阵列中的每一个元素带入指定的函数内做判断,只要有任何一个元素符号判断条件,就会回传true,如果全都不符合,就会传false

        let someArray = [1, 2, 3, 4, 5, 6];
        console.log(someArray.some(e => e > 3)); // true
        console.log(someArray.some(e => e > 6)); // false
    
  29. includes()

    includes() 会判断阵列中是否包含某一个值,如果有包含就辉传true,否则回传false,有两个参数,第一个参数表示要判断的值(必填),第二个参数表示阵列的哪个位置开始判断(选填)

        let icArray = [1, 2, 3, 4, 5, 6, 7];
        console.log(icArray.includes(2)) //true
        console.log(icArray.includes(2, 2)) // false (搜索 3,4,5,6,7没有2)
    
  30. valueOf()

    ​​​​​​​valueOf() 会回传阵列的原始值,如何原本的阵列有修改,那么回传的原始值也会跟着改变

        let one = [1, 2, 3, 4, 5, 6, 7, 8];
        let two = one.valueOf();
        console.log(one) // [1, 2, 3, 4, 5, 6, 7, 8]
        let three = one.valueOf();
        one.shift();
    
        console.log(one); // [2, 3, 4, 5, 6, 7, 8]
        console.log(two); // [2, 3, 4, 5, 6, 7, 8]
        console.log(three); // [2, 3, 4, 5, 6, 7, 8]
    
  31. keys()

    ​​​​​​​keys() 会回传阵列中的每一个索引值(key)成为一个新的array lterator 物件,因为是array lterator 物件,可以透过for...of来取得

    let keysArray = ['a', 'b', 'c', 'd', 'e'];
    let result = keysArray.keys();

    for (let key of result ) {
        console.log(key) // 依次出现1、2、3、4、5
    }
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

纯_粹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值