JavaScript系列——数组


前言`

ECMAScript数组也是一组有序列表,但与其他语言不同的是ES数组的每一个槽位可以存储任意类型的数据。


一、创建数组

1、使用构造函数创建

const arr = new Object();

		 // 使用构造函数创建数组
        let arr1 = new Array();  //
        let arr2 = new Arrar(20); //创建一个初始length为20的数组
        let arr3 = new Array('red', 'blue', 'green'); //创建包含3个元素(red,blue,green)的数组

2、使用数组字面量创建

		 // 使用字面量创建
        let arr4 = [1,2,3];         //创建包含3个元素的数组
        let arr5 = ['blue', 'red']; //创建包含2个元素的数组
        let arr6 = [];              //创建一个空数组

3、使用ES6Array构造函数新增的静态方法、from( )和of( )

Array.from()的第一个参数是一个类数组对象,或者有一个length属性的可索引的结构。
Map() Set() 字符串等都可以。

二、数组空位和数组索引

数组空位:
ES6新增方法普遍将数组空位当成存在的元素,只不过值为undefined。
数组索引:从0开始

		//数组索引
        let arr3 = new Array('red', 'blue', 'green');
        console.log(arr3[0]);   //red
        console.log(arr3[1]);   //blue
        console.log(arr3[2]);   //green

length属性:数组的的长度,可以通过修改length属性修改数组的长度

		//length属性
        let arr3 = new Array('red', 'blue', 'green');
        console.log(arr3.length); //3
        arr3.length = 10;
        console.log(arr3[9]);   //undefined

三、检测数组

判断一个变量是否为一个数组
(1)、intanceof 操作符
(2)、Arrayde静态方法 Array.isArray()
(3)、Object.prototpe.toString.call()
(4)、Object.constructor === Array

		//检测数组
        arr = [];
        console.log(Array.isArray(arr));                    //true
        console.log(arr instanceof Array);                  //true
        console.log(arr.constructor === Array);             //true
        console.log(Object.prototype.toString.call(arr));   //[object Array]

四、迭代器方法

(1)、Array.keys( )
(2)、Array.values( )
(3)、Array.entries( )
返回的是一个迭代器,可以通过Array.from()转为数组。
代码示例:

		//迭代器方法
        let arr = ['blue', 'red'];
        avalues = Array.from(arr.values())
        console.log(avalues);                   //['blue', 'red']
        akeys = Array.from(arr.keys())         
        console.log(akeys);                      //[0, 1]
        aentries = Array.from(arr.entries())    
        console.log(aentries);                  //[[0, 'blue'],[1, 'red']]

该处使用的url网络请求的数据。


五、数组方法

1、增

(1)、push()方法接受任意数量的参数,并将它们添加到数组末尾,返回数组的长度。
(2)、unshift()方法接受任意数量的参数,并将它们添加到数组开头,返回数组的长度。
(3)、splice()需要给方法传N个参数。开始位置、0、要插入的元素。

2、删

(1)、pop()删除最后一项,返回被删除的项。
(2)、shift()删除第一项,返回被删除的项。
(3)、splice()需要给方法传2个参数。删除第一个元素的位置,删除的元素个数。

3、查

(1)、indexOf()传入两个参数。要查找的元素,可选的起始搜索位置。 返回索引值
(2)、lastIndexOf()传入两个参数。要查找的元素,可选的起始搜索位置。从后面开始查找。返回索引值。
(3)、includes()传入两个参数。要查找的元素,可选的起始搜索位置。返回布尔值。
(4)、find((element,index,array)=> {},可选) 返回符合的第一个元素
(5)、findIndex((element,index,array)=> {},可选)返回符合的第一个元素的索引值

		let arr = [2, 4, 6, 7, 8, 9];
        let a = arr.find((item) => { return item % 2 !== 0 });
        console.log(a);     //元素值 7
        let b = arr.findIndex((item) => { return item % 2 !== 0 })
        console.log(b);     //索引值  3

4、改

(1)、splice()接受3个参数,开始位置,1,要修改的元素。可以配合indexof()或者findIndex()使用。

5、迭代方法

ECMAScript为数组定义了5个迭代方法。每个方法接收两个参数:以每一项为参数运行的函数,以及可选的作为函数运行上下文的作用域对象(影响函数中this的值)。传给每个方法的函数接收3个参数:数组元素、元素索引和数组本身。因具体方法而异,这个函数的执行结果可能会也可能不会影响方法的返回值。数组的5个迭代方法如下。
every():对数组每一项都运行传入的函数,如果对每一项函数都返回true,则这个方法返回true。
filter():对数组每一项都运行传入的函数,函数返回true的项会组成数组之后返回。
forEach():对数组每一项都运行传入的函数,没有返回值。
map():对数组每一项都运行传入的函数,返回由每次函数调用的结果构成的数组。
some():对数组每一项都运行传入的函数,如果有一项函数返回true,则这个方法返回true。这些方法都不改变调用它们的数组。

6、归并方法

(1)、reduce(),接受一个回调和一个归并起始值,从第一项开始遍历。
回调函数(prev,cur,index,array)= > {} 四个参数分别为上一个归并之,当前项,当前项索引值,数组本身。

		let arr = [2, 4, 6, 7, 8, 9];
        const num1 = arr.reduce((prev, cur, index, arrat) => {
            return prev + cur
        }, 0)
        const num2 = arr.reduce((prev, cur, index, arrat) => {
            return prev * cur
        })
        console.log(num1,num2);

(2)、reduceRight()跟reduce()一样只是从最后一项开始遍历。
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值