JavaScript数组 十九种常见用法

1 篇文章 0 订阅

前言:

自己临时总结,若有遗漏,望留言补充!在coding bug的路上,我与你同在!

1 Arrray.push()

在原数组尾部添加新元素或者新数列;

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let pushEl = 3;
            arr.push(pushEl)
            console.log(`newArr:`,arr); // --newArr: (11) [5, 4, 2, 6, 2, 6, 8, 2, 9, 0, 3]
        }

2 Array.pop()

移除数组最后一项,减少数组的length,返回被移除的值

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            arr.pop()
            console.log(`newArr:`,arr); // --newArr: (11) [5, 4, 2, 6, 2, 6, 8, 2, 9]
            console.log(`使用pop方法:`,arr.pop()) // --使用pop方法: 9   因为输出时又使用里一次pop()
        }

3 Array.join()

数组转换成字符串的连接符,默认是逗号 ‘,’;

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            arr.join('/')
            console.log(`newArr:`,arr); // --newArr: (11) [5, 4, 2, 6, 2, 6, 8, 2, 9, 0]
            console.log(`使用join:`,arr.join('/')) // --使用join: 5/4/2/6/2/6/8/2/9/0
        }

4 Array.unshift()

unshift:将参数添加到原数组开头,并返回数组的长度 。

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let arr2 = [1];
            arr.unshift();
            arr2.unshift('new');
            console.log(`newArr:`,arr.unshift()); // --newArr: 10   即返回数组长度
            console.log(`使用unshift:`,arr2) // --使用unshift: ["new", 1]   即添加一个元素
        }

5 Array.shift()

移除数组首项,返回删除的元素;若数组时空值,则返回 undefined;

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let arr2 = [];
            arr.shift();
            arr2.shift();
            console.log(`newArr:`,arr); // --newArr: (9) [4, 2, 6, 2, 6, 8, 2, 9, 0]
            console.log(`使用shift:`,arr2.shift()) // --使用shift: undefined
        }

6 Array.sort()

数组元素从小到大排列;返回已排列好的数组;

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            arr.sort();
            console.log(`newArr:`,arr); // --newArr: (10) [0, 2, 2, 2, 4, 5, 6, 6, 8, 9]
            console.log(`使用sort:`,arr.sort()) // --使用sort: (10) [0, 2, 2, 2, 4, 5, 6, 6, 8, 9]
        }

7 Array.reverse()

数组元素序列反转,返回反转序列数组;

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            arr.reverse();
            console.log(`newArr:`,arr); // --newArr: (10) [0, 9, 2, 8, 6, 2, 6, 2, 4, 5]
        }

8 Array.concat()

两个或者多个数组合并成一个新的数组,返回新数组;

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let  arr2 = [3,33,333]
            arr.concat(arr2);
            console.log(`newArr:`,arr); // --newArr: (10) [5, 4, 2, 6, 2, 6, 8, 2, 9, 0]  原数组并未改变
            console.log(`使用concat:`,arr.concat(arr2)) // --使用concat: (13) [5, 4, 2, 6, 2, 6, 8, 2, 9, 0, 3, 33, 333]
        }

9 Array.slice()

返回从原数组中指定开始下标到结束下标之间的项组成的新数组。slice(startIndex,endIndex)方法可以接受一或两个参数,即要返回项的起始和结束位置。在只有一个参数的情况下, slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。";

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            arr.slice(2, 6);
            console.log(`newArr:`,arr); // --newArr: (10) [5, 4, 2, 6, 2, 6, 8, 2, 9, 0]  原数组并未改变
            console.log(`使用slice:`,arr.slice(2, 6)) // --使用slice: (4) [2, 6, 2, 6]
        }

10 Array.splice()

数组截取、插入和替换。删除:指定 2 个参数:要删除的第一项的位置和要删除的项数。插入:可以向指定位置插入任意数量的项,只需提供 3 个参数:起始位置、 0(要删除的项数)和要插入的项。替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需指定 3 个参数:起始位置、要删除的项数和要插入的任意数量的项。插入的项数不必与删除的项数相等。"

删除:Array.splice(deleteStart, deleteItemSum)

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let spliceArr = arr.splice(2, 6);
            console.log(`newArr:`,arr); // --newArr: (4) [5, 4, 9, 0]  原数组已改变,移除里 6 项 [2, 6, 2, 6, 8, 2]
            console.log(`使用splice:`,spliceArr) // --使用splice: (6) [2, 6, 2, 6, 8, 2] 返回已删除的元素组成新数组
        }

插入:Array.splice(startIndex, willDeleteSum, willInsertItems )

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let insertArr = [3,33,333]
            let spliceArr = arr.splice(2, 0, insertArr);
            console.log(`newArr:`,arr); // --newArr: (11) [5, 4, Array(3), 2, 6, 2, 6, 8, 2, 9, 0] 举例中我插入一个数组insertArr
        }

替换与插入相似,插入中第二个参数是删除的项数,相当于插入之前先删除;这里就不举例了;

11 Array.indexOf()

接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let changeArr = arr.indexOf(2, 3);
            let orArr = arr.indexOf(100, 0);
            console.log(`使用indexOf:`,changeArr,orArr) // --使用indexOf: 4 -1  存在返回下标index  否则返回-1
        }

12 Array.lastIndexOf()

接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。 ";参考Array.indexOf()

13 Array.forEach()

对数组进行遍历循环,对数组中的每一项运行给定函数。这个方法没有返回值,每次运行完返回undefined。参数都是function类型,默认有传参,参数分别为:遍历的数组内容;对应的数组索引,数组本身。";
返回undefined:

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let changeArr = 
            arr.forEach((item) => {
                return item;
            });
            console.log(`newArr:`,arr); // --newArr: (10) [5, 4, 2, 6, 2, 6, 8, 2, 9, 0]
            console.log(`使用forEach:`,changeArr) // --使用forEach: undefined
        }

基本用法:

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let changeArr = [];
            arr.forEach((item) => {
                return changeArr.push(item*item);
            });
            console.log(`newArr:`,arr); // --newArr: (10) [5, 4, 2, 6, 2, 6, 8, 2, 9, 0]
            console.log(`使用forEach:`,changeArr) // --使用forEach: (10) [25, 16, 4, 36, 4, 36, 64, 4, 81, 0]
        }

14 Array.filter()

“过滤”功能,数组中的每一项运行给定函数,返回满足过滤条件组成的数组。注意写法,写法不同输出结果不同,以下我举例三个以及一个错误写法…有{}必须有return;没{}则没return;

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let changeArr = 
            arr.filter((item) => {
                return item > 2;
            });
            // 类型 一
            let type1 = arr.filter( item => item > 5);
            // 类型 二
            let type2 = arr.filter( item => { item > 5});
            // 类型 三 
            let type3 = arr.filter( item => { return item > 5});
            // 类型 四 
            // let type4 = arr.filter( item => return item > 5); //---->错误写法
            console.log(`newArr:`,arr); // --newArr: (10) [5, 4, 2, 6, 2, 6, 8, 2, 9, 0]
            console.log(`使用filter:`,changeArr) // --使用filter: (6) [5, 4, 6, 6, 8, 9]
            console.log(`类型 一:`,type1); // --类型 一: (4) [6, 6, 8, 9]
            console.log(`类型 二:`,type2);// --类型 二: []
            console.log(`类型 三:`,type3);// --类型 三: (4) [6, 6, 8, 9]
        }

15 Array.map()

返回一个新的数组,数组元素则是经过函数调用后的元素;

testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let arrObject = [{
                a:1,
                b:2,
                c:3,
                d:4,
                e:5
            }];
            let changeArr =  arrObject.map(item => {
                item.a = 6;
                item.b = 7;
                return {...item}
            })
            console.log(`原数组:`,arrObject); // --原数组: [{a: 6, b: 7, c: 3, d: 4, e: 5}]
            console.log(`使用map:`,changeArr) // --使用map:[{a: 6, b: 7, c: 3, d: 4, e: 5}]
        }

16 Array.some()

判断数组中存在一项则返回true;否则为false

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let arrObject = [{
                a:1,
                b:2,
                c:3,
                d:4,
                e:5
            }];
            let changeArr =  arrObject.some(item => item.a)
            console.log(`原数组:`,arrObject); // --原数组:不变
            console.log(`使用some:`,changeArr) // --使用some: true
        }

17 Array.every()

判断数组中每一项都满足则为true,否则为false;

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let arrObject = [{
                a:1,
                b:2,
                c:3,
                d:4,
                e:5
            }];
            let changeArr =  arrObject.every(item => item.a == 10)
            console.log(`原数组:`,arrObject); // --原数组:不变
            console.log(`使用every:`,changeArr) // --使用every: false
        }

18 Array.includes()

判断数组是否包含某一元素,与indexOf相似,区别在于includes()可以判断NaN;

testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0,NaN];
            let arrObject = [{
                a:1,
                b:2,
                c:3,
                d:4,
                e:5
            }];
            let changeArr =  arr.includes(NaN)
            console.log(`原数组:`,arrObject); // --原数组:不变
            console.log(`使用includes:`,changeArr) // --使用includes: true
        }

19 Array.reduce()

reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值。reduce() 方法接受四个参数:初始值(或者上一次回调函数的返回值),当前元素值,当前索引,调用 reduce() 的数组。便于记忆,
即reduce(previous, current,currentIndex,Array);以下举例常规用法:
·求和:

		testArray(){
            let arr = [5,4,2,6,2,6,8,2,9,0];
            let arrObject = [{
                a:1,
                b:2,
                c:3,
                d:4,
                e:5
            }];
            // 数组求和 
            let total = arr.reduce( (previous, current) => {
                return previous + current
            })
            console.log(`原数组:`,arr); // --原数组:不变
            console.log(`数组求和total:`,total) // --数组求和total: 44
        }

·二维数组改一维数组

		testArray(){
            let arr = [[5,4],[2,6],[2,6],[8,2],[9,0]];
            // 二维数组改一维数组
            let concat = arr.reduce( (previous, current) => {
                return previous.concat(current)
            })
            console.log(`原数组:`,arr); // --原数组: (5) [Array(2), Array(2), Array(2), Array(2), Array(2)]
            console.log(`二维数组改一维数组:`,concat) // --二维数组改一维数组: (10) [5, 4, 2, 6, 2, 6, 8, 2, 9, 0]
        }

·计算数组中元素出现的次数:

		testArray(){
            let arr = [5, 4, 2, 6, 2, 6, 8, 2, 9, 0];
            let names = ['Tonny','Alice','Bruce','Hero','Tonny','Tonny','Alice','Hero'];
            // 计算数组中每个元素出现的次数
            let concat = names.reduce( (previous, current) => {
                current in previous ? previous[current]++ : previous[current] = 1;
                return previous;
            },{});
            let numberCount = (arr, value) => arr.reduce( (previous, current) => {
                return value == current ? previous + 1 : previous + 0;
            },0);
            let number = numberCount(arr, 2);
            console.log(`原数组:`,arr,names); // --原数组: (10) [5, 4, 2, 6, 2, 6, 8, 2, 9, 0] (8) ["Tonny", "Alice", "Bruce", "Hero", "Tonny", "Tonny", "Alice", "Hero"]
            console.log(`计算数组中每个元素出现的次数:`,concat) // --计算数组中每个元素出现的次数: {Tonny: 3, Alice: 2, Bruce: 1, Hero: 2}
            console.log(`计算数组Arr中2的出现次数:`,number) // --计算数组Arr中2的出现次数: 3
        }

·数组去重:

		testArray(){
            let arr = [5, 4, 2, 6, 2, 6, 8, 2, 9, 0];
            // 数组去重 方法一
            let number = arr.sort().reduce( (previous, current) => {
                previous.length === 0 || previous[previous.length - 1] !== current ? previous.push(current) : '' ;
                return previous;
            },[])
            // 数组去重  方法二
            let setNum = Array.from( new Set(arr));  // es6 拓展运算符
            console.log(`原数组:`,arr); // --原数组: (10) [0, 2, 2, 2, 4, 5, 6, 6, 8, 9]
            console.log(`去重后的数组 方法一`,number) // --去重后的数组 方法一 (7) [0, 2, 4, 5, 6, 8, 9]
            console.log(`去重后的数组 方法二`,setNum) // --去重后的数组 方法一 (7) [0, 2, 4, 5, 6, 8, 9]
        }

常见用法!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值