JavaScript数组相关知识

目录

一、数组的概念

1.1 定义:

 1.2 数组的定义方式:

1.3 数组的索引下标和长度:

 二、数组的基本操作

2.1 数组的调用:

2.2 数组的修改:

2.3 数组的新增:

三、数组的循环遍历

方法一:通过for循环遍历

 方法二:for...in 循环

 方法三:for...of循环

方法四:forEach

 总结:

四、数组的函数方法

数组的函数方法   

4.1 数组的映射

4.2 数组的过滤

4.3 数组的判断   

 4.4 首位新增

4.5 首位删除

4.6 末位新增

4.7 末位删除

4.8 数组指定单元的删除

4.9 数组的查询

4.10 数组的反转

4.11 数组转化字符串

4.12 字符串转化数组

4.13 数组的排序 

4.14 数组的拼接 

 4.15 数组的截取

 总结:


一、数组的概念

1.1 定义:

         数组(Array)是存储数据的集合。

数据存储类型不同:

       基本数据类型 :一次只能存储一个数据单元   

       var num = 20;

       数组 :一次可以存储多个数据单元                 

       var arr = [1,2,3,4,5,6];

 1.2 数组的定义方式:

/*
    字面量语法形式

        var 变量 = [ 数据1 , 数据2 , 数据3 ....  ];
            在 [ ] 中 定义 数组存储的数据单元 
            数据单元可以是一个可以是多个 
            多个数据单元 使用逗号间隔 
            数组中可以存储所有JavaScript支持的数据结构

    构造函数定义数组

        var 变量 = new Array(); 
*/

//字面量语法定义数组
var arr = [1,2,3,4,5];

//构造函数定义数组
var arr1 = new Array();

1.3 数组的索引下标和长度:

var arr = [1,2,3,4,5];

//索引下标 0 1 2 3 4(一一对应以上数组单元)

//数组length 属性的调用
console.log(arr.length); // 数组长度是5

 二、数组的基本操作

先定义一个数组,有以下代码,我们逐一进行解释:

var arr = ['北京','上海','广州','深圳','重庆'];
console.log(arr[3]);
console.log(arr[50]);
arr[3] = '成都';

2.1 数组的调用:

       通过数组的索引下标 获取 指定数组单元存储的数据数值

//通过 [] 取值语法 调用指定 索引下标 存储的数据数值 

console.log(arr[3]);  //调用结果 深圳

//没有对应的索引下标 

console.log(arr[50]); //调用结果 undefined

2.2 数组的修改:

                通过数组的索引下标 对 已经存在的索引下标对应的单元 进行 重复赋值

                后赋值的数据会覆盖之前存储的数据

                执行效果就是修改数组单元存储的数据

//后赋值的成都会覆盖以前存储的深圳
arr[3] = '成都';

2.3 数组的新增:

//新增数组元素有两种方法

//方法一:修改length长度
var arr = ['北京','上海','广州','深圳','重庆'];
arr.length = 6;
console.log(arr[5]);//调用结果 undefined

//方法二:修改数组索引号 追加数组元素
var arr1 = ['北京','上海','广州','深圳','重庆'];
arr1[5] = '武汉';
console.log(arr1);

方法二的执行结果:

三、数组的循环遍历

 数组的循环遍历:

                按照顺序 操作数组中的所有单元 称为 数组的循环遍历

方法一:通过for循环遍历

var arr = ['北京','上海','广州','深圳','重庆'];

//循环遍历
for (var i = 0; i < 5; i++) {
    console.log(arr[i]);
}

//数组长度  数组名.length
for (var i = 0; i < arr.length; i++) {
    console.log(arr[i]);
}

 执行结果:

 方法二:for...in 循环

         for ( var 变量 in 数组) {

         }

           变量存储的是数组单元的索引下标

           数组[变量]  获取索引下标对应单元存储的数值数据

var arr = ['北京','上海','广州','深圳','重庆'];

for ( var index in arr) {

    // JavaScript程序自动对数组进行循环遍历
    // 每循环一次 将 数组的索引下标存储在 变量中
    // 数组[变量] 获取 数组单元的数据数值

    console.log(index,arr[index]);

}

执行结果:

var arr = ['北京','上海','广州','深圳','重庆'];

for ( var index in arr) {

    console.log(index,arr[index]);
    
    if (index === '2') {
       break;
    }   

}

 加 if 判断 执行结果:

 方法三:for...of循环

         for(var 变量 of 数组){

         }

         变量存储的是数组单元的数值数据

var arr = ['北京','上海','广州','深圳','重庆'];

for ( var value of arr) {

    // JavaScript程序自动对数组进行循环遍历
    // 每循环一次 将 数组的数据数值存储在 变量中
    // 变量 获取 数组单元的数据数值

    console.log(value);

}

 执行结果:

var arr = ['北京','上海','广州','深圳','重庆'];

for ( var value of arr) {

    console.log(value);

    if (value === '深圳') {
       break;
    }

}

加 if 判断 执行结果:

方法四:forEach

        数组.forEach(function(参数1,参数2,参数3){

                参数1:存储的是数组的数值数据

                参数2:存储的是数组的索引下标

                参数3:存储的是原始数组的内容

         })

var arr = ['北京','上海','广州','深圳','重庆'];

arr.forEach(function (value,index,array) {
    
    // JavaScript程序自动对数组进行循环遍历
    // 每循环一次 将 数组的数据数值存储在 参数1中
    // 每循环一次 将 数组的索引下标存储在 参数2中
    // 每循环一次 将 原始数组 参数3中

    console.log(value,index,array);

     // forEach 不支持 break语句
     // if( index === '2' ){
     //     break;
     // }

})

执行结果:

 总结:

               1、实际项目中推荐使用for循环遍历数组

                    它的执行效率最高

                    for循环支持break语句

                2、特殊情况下可以使用for...in  for...of

                      for...in是唯一可以循环遍历对象的语法形式

                      for...in  for...of循环支持break语句,不能控制循环数组的顺序

                3、forEach执行效率最低

                      可以同时获取数据和索引下标操作比较方便

                      forEach不支持break语句

四、数组的函数方法

数组的函数方法   

        JavaScript程序给数组定义了很多的函数方法 ,它是操作数组的程序

        JavaScript已经定义好了,可以直接调用使用

        调用语法:数组.函数方法();

首先我们要了解两个概念:

        映射

                一 一对应的有操作的结果

        镜像

               一模一样

JavaScript中ES5的函数操作语法

4.1 数组的映射

          将数组中每一个单元的数据执行相同的操作生成一个新数组

          数组的映射不会改变原始数组的数据数值

          它是使用变量存储新的数组

语法:

数组.map(function(参数1,参数2,参数3){ return 参数1的操作 }) 

        参数1:存储的是数组单元的数值数据

        参数2:存储的是数组单元的索引下标

        参数3:存储原始数组

var arr = [10,20,30,40,50,60];

var newArr = arr.map(function( value ) {
    
    return value*2;

})

console.log(arr);
console.log(newArr);

执行结果:

4.2 数组的过滤

         将数组的每个单元执行判断比较,将符合条件的数据,生成一个新的数组

语法:

数组.filter(function(参数1,参数2,参数3){ return 参数1的判断比较 })                     

        参数1:存储的是数组单元的数值数据

        参数2:存储的是数组单元的索引下标

        参数3:存储原始数组

var arr = [10,20,30,40,50,60];

var newArr = arr.filter(function( value ) {
    return value > 30;
})

console.log(arr);
console.log(newArr);

执行结果:

4.3 数组的判断   

(1)数组.some(function(参数1,参数2,参数3){ return 参数1的判断比较 })

                  参数1:存储的是数组单元的数值数据

                  参数2:存储的是数组单元的索引下标

                  参数3:存储原始数组

          将数组中每一个单元执行判断比较 ,只要有符合条件的数据,返回值就是 true

var arr = [10,20,30,40,50,60];

var newArr = arr.some(function( value ) {
    return value > 20;
})

console.log(arr);
console.log(newArr);

执行结果:

(2) 数组.every(function(参数1,参数2,参数3){ return 参数1的判断比较 })

                  参数1:存储的是数组单元的数值数据

                  参数2:存储的是数组单元的索引下标

                  参数3:存储原始数组

           将数组中每一个单元执行判断比较 ,必须所有的数据符合条件,返回值才是 true

var arr = [10,20,30,40,50,60];

var newArr = arr.every(function(value) {
    return value > 20;
})

console.log(arr);
console.log(newArr);

执行结果:

 常用的数组函数方法

 4.4 首位新增

 数组.unshift(数据1,数据2,...);

var arr = [10,20,30,40,50,60];

var newArr = arr.unshift(0,5);

console.log(newArr);
console.log(arr);

执行结果:

4.5 首位删除

 数组.shift();

var arr = [10,20,30,40,50,60];

var newArr = arr.shift();

console.log(newArr);
console.log(arr);

执行结果

        

4.6 末位新增

数组.push(数据1,数据2,...);

var arr = [10,20,30,40,50,60];

var newArr = arr.push(70,80);

console.log(newArr);
console.log(arr);

执行结果:

   

4.7 末位删除

数组.pop();

var arr = [10,20,30,40,50,60];

var newArr = arr.pop();

console.log(newArr);
console.log(arr);

执行结果:

总结新增和删除:

        首位新增和末位新增 :一次可以新增一个或者多个数据单元

                                             返回值是 新数组的length

        首位删除和末尾删除:一次只能删除一个数据单元

                                            返回值是 删除单元存储的数据

4.8 数组指定单元的删除

数组.splice(参数1,参数2,其它所有参数);

        参数1:删除单元起始位置的索引下标

        参数2:删除单元的个数

        其它所有参数:替换要删除单元的数据,可以是一个也可以是多个

        返回值是 删除的数组单元组成的数组

var arr = [10,20,30,40,50,60];

//删除20,30,40

var newArr = arr.splice(1,3,25,35,45);

console.log(newArr);
console.log(arr);

执行结果:

4.9 数组的查询

        查询数组单元中有没有存储这个数据数值

(1)数组.indexOf( 查询的数据 );

                 查询数值中有没有存储对应的数据数值

                 如果有 返回 第一个存储这个数据单元的索引下标

                 如果没有 返回值 是 -1

var arr = [10, 20, 30, 20, 40, 50, 50, 60];

var newArr = arr.indexOf(50);

var newArr1 = arr.indexOf(70);

console.log(newArr);
console.log(newArr1);

执行结果:

(2)数组.lastIndexOf( 查询的数据 )

                 查询数值中有没有存储对应的数据数值

                 如果有 返回 最后一个存储这个数据单元的索引下标

                 如果没有 返回值 是 -1

var arr = [10, 20, 30, 20, 40, 50, 50, 60];

var newArr = arr.lastIndexOf(50);

var newArr1 = arr.lastIndexOf(70);

console.log(newArr);
console.log(newArr1);

执行结果:

4.10 数组的反转

        将数组单元的排序顺序反转

数组.reverse();

var arr = [1,2,3,4,5];

arr.reverse();

console.log( arr );

执行结果:

4.11 数组转化字符串

         获取数据中的数据转化拼接为字符串

(1)数组.join();   获取单元的数值  以逗号为间隔                     

var arr = [1,2,3,4,5];

var str = arr.join();

console.log(str);

 执行结果 :

(2)数组. join('间隔符');    获取单元的数值  以设定的符号为间隔

var arr = [1,2,3,4,5];

var str = arr.join('~');

console.log(str);

执行结果:   

(3)数组. join('');    获取单元的数值  设定空字符串为间隔   字符之间是没有间隔的

var arr = [1,2,3,4,5];

var str = arr.join('');

console.log(str);

  执行结果:

4.12 字符串转化数组

        将字符串中的字符,按照设定分割为数据数值存储到数组中

(1)字符串.split();   将整个字符串作为一个整体 存储到数组中

var str = 'l~o~v~e';

var arr = str.split();

console.log(arr);

执行结果:

(2)字符串.split('间隔符');   

         按照 间隔符号 将 字符串 分割为 数据数值 存储到数组中 

         分割之后数组中没有间隔符号存储

var str = 'l~o~v~e';

var arr = str.split('~');

console.log(arr);

执行结果:

 (3)字符串.split('');    将每一个字符串都分割为一个数据数值 存储到数组中

var str = 'l~o~v~e';

var arr = str.split('');

console.log(arr);

执行结果:

4.13 数组的排序 

(1)数组.sort();

         按照数组单元数据的首字符的ascii码数值 由小到大 进行排序

var arr = [1,13,6,54,38,46,34,78,9,910,874];


arr.sort();

console.log(arr);

执行结果:

 (2)数组.sort(function(参数1,参数2){ return 参数1-参数2 });

          由小到大排列

var arr = [1,13,6,54,38,46,34,78,9,910,874];

arr.sort(function(min,max){
    return min - max;
});

console.log(arr);

执行结果:

(3)数组.sort(function(参数1,参数2){ return 参数2-参数1 });

          由小到大排列

var arr = [1,13,6,54,38,46,34,78,9,910,874];

arr.sort(function(min,max){
    return max - min;
});

console.log(arr);

执行结果:

4.14 数组的拼接 

数组.concat();   不会改变原始数组中的内容

var arr1 = [1,2,3];

var arr2 = [4,5,6];

var arr3 = [7,8,9];

//将arr1,arr2,arr3拼接成一个新的数组
//不会改变 arr1  arr2 arr3 原始数组中的内容
var newArr = arr1.concat(arr2,arr3);

console.log(arr1);
console.log(arr2);
console.log(arr3);
console.log(newArr);

执行结果:

 4.15 数组的截取

(1)数组.slice(参数);

          从设定的索引下标开始 截取至最后一个数组单元

var arr = ['I','L','O','V','E','Y','O','U'];

var newArr = arr.slice(1);

console.log(newArr);

执行结果:

(2)数组.slice(参数1,参数2);      

         从设定的索引下标(参数1)开始 截取至 设定的索引下标(参数2)

         但截取的结果 不包括 索引下标(参数2)单元的数据  

var arr = ['I','L','O','V','E','Y','O','U'];

var newArr = arr.slice(1,5);

console.log(newArr);

执行结果:

 总结:

以下7个方法都会直接改变原始数组:

首位新增                             arr.unshift(数据1,数据2,...);

首位删除                             arr.shift();

末位新增                             arr.push(数据1,数据2,...);

末位删除                             arr.pop();

数组指定单元的删除           arr.splice(参数1,参数2,其它所有参数);

反转数组                             arr.reverse();

数组排序                             arr.sort();

以下8个方法不会改变原始数组:

数组的映射                arr.map(function(参数1,参数2,参数3){ return 参数1的操作 }) 

数组的过滤                arr.filter(function(参数1,参数2,参数3){ return 参数1的判断比较 }) 

数组的判断                arr.some(function(参数1,参数2,参数3){ return 参数1的判断比较 })   

                                  arr.every(function(参数1,参数2,参数3){ return 参数1的判断比较 })

数组的查询                arr.indexOf( 查询的数据 );

                                  arr.lastIndexOf( 查询的数据 )

数组转化字符串        arr.join();

字符串转化数组        str.spilt();

数组的拼接                arr.concat();

数组的截取               arr.alice();

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

王昭没有君啊

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

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

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

打赏作者

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

抵扣说明:

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

余额充值