JS-8-数组

一、JavaScript-数组
1.什么是数组?

数组就是专门用于存储一组数据的;

  • 注意点:
    和我们前面学习的Number / String / Boolean/ Null / undefined不同(基本数据类型);而我们今天学习的数组(Array)不是基本数据类型, 是引用数据类型(对象类型);
2.如何创建一个数组?

let 变量名称 = new Array(size);

数组注意点:

 - 和其它编程语言不同, 如果数组对应的索引中没有存储数据, 默认存储的就是undefined;
   // 其它编程语言中默认保存的是垃圾数据或者0;

 - 和其它编程语言不同, JavaScript中访问了数组中不存在的索引不会报错, 会返回undefined;
   // 其它编程语言一旦超出索引范围就会报错或者返回脏数据;

 - 和其它编程语言不同, 当JavaScript中数组的存储空间不够时数组会自动扩容;
   // 其它编程语言中数组的大小是固定的;

 - 和其它编程语言不同,JavaScript的数组可以存储不同类型数据;
   // 在其它编程语言中数组只能存储相同类型数据(要么全部都是字符串, 要么全部都是数值等);

 - 和其它编程语言不同,JavaScript中数组分配的存储空间不一定是连续的;
   // 其它语言数组分配的存储空间都是连续的, JavaScript数组是采用"哈希映射"方式分配存储空间;
   // 什么是哈希映射? 好比字典可以通过偏旁部首找到对应汉字,我们可以通过索引找到对应空间;
   // 在浏览器中各大浏览器也对数组分配存储空间进行了优化;
   // 如果存储的都是相同类型的数据, 那么会尽量分配连续的存储空间;
   // 如果存储的不是相同的数据类型, 那么就不会分配连续的存储空间;

. 创建数组的其它方式
 1. 通过构造函数创建数组:
   let 变量名称 = new Array(size);  创建一个指定大小数组
   let 变量名称 = new Array();     创建一个空数组
   let 变量名称 = new Array(data1, data2, ...);   创建一个带数据的数组

 2. 通过字面量创建数组:
   let 变量名称 = [];  创建一个空数组
   let 变量名称 = [data1, data2, ...];  创建一个空数组

3.什么是数组的遍历

数组的遍历就是依次取出数组中存储的所有数据, 我们就称之为数组的遍历;


二、JavaScript-数组解构赋值
1.什么是数组的解构赋值?

解构赋值是ES6中新增的一种赋值方式;
例:

let ee = [1,3,5];

let [a,b,c]=ee; //a=1,b=2,c=3
2.数组解构赋值的注意点

2.1 在数组的解构赋值中, 等号左边的格式必须和等号右边的格式一模一样, 才能完全解构;

let [a, b, [c, d]] = [1, 3, [2, 4]];

2.2 在数组的解构赋值中, 左边的个数可以和右边的个数不一样;

2.3 在数组的解构赋值中, 右边的个数可以和左边的个数不一样;

2.4 在数组的解构赋值中,如果右边的个数和左边的个数不一样, 那么我们可以给左边指定默认值;

let [a, b = 666, c = 888] = [1];

2.5 在数组的解构赋值中, 如果左边的个数和右边的个数不一样, 那么如果设置默认值会被覆盖;

2.6 在数组的解构赋值中, 还可以使用ES6中新增的扩展运算符来打包剩余的数据;

let [a, ...b]= [1, 3, 5]; //a=1 , b=3, 5

2.7 在数组的解构赋值中, 如果使用了扩展运算符, 那么扩展运算符只能写在最后;


三、JavaScript-数组增删改查

let arr = ["a","b", "c"];

需求: 获取数组中索引为1的那个数据 (查);
console.log(arr[1]);

需求: 将索引为1的数据修改为m (改);
arr[1] = "m";

需求: 将索引为1的数据修改为d, 索引为2的修改为e (改);
参数1: 从什么位置开始
参数2: 需要替换多少个元素
参数3开始: 新的内容
arr.splice(1, 2, "d", "e");

需求: 要求在数组最后添加一条数据 (增);
push方法可以在数组的最后新增一条数据, 并且会将新增内容之后数组当前的长度返回给我们;
let res = arr.push("d");

需求: 要求在数组最后添加两条数据 (增);
数组的push方法可以接收1个或多个参数;
arr.push("d", "e");

需求: 要求在数组最前面添加一条数据 (增);
unshift 方法和 push 方法一样, 会将新增内容之后当前数组的长度返回给我们;
let res = arr.unshift("m");
unshift方法和push方法一样, 可以接收1个或多个参数;
arr.unshift("m", "w");

需求: 要求删除数组最后一条数据 (删);
数组的pop方法可以删除数组中的最后一条数据, 并且将删除的数据返回给我们;
let res = arr.pop();

需求: 要求删除数组最前面一条数据 (删) ;
数组的shift方法可以删除数组中的最前面一条数据, 并且将删除的数据返回给我们;
let res = arr.shift();

需求: 要求删除数组中索引为1的数据 (删);
以下代码的含义: 从索引为1的元素开始删除1条数据
参数1: 从什么位置开始
参数2: 需要删除多少个元素
arr.splice(1, 1);

需求: 要求删除数组中除了第0条以外的所有数据 (删)
arr.splice(1, 2);


四、数组常用方法

给定数组:
let arr = [1, 2, 3, 4, 5];

1.如何清空数组

// arr = [];      
// arr.length = 0;       
// arr.splice(0, arr.length)

2.如何将数组转换为字符串
let str = arr.toString();

3.如何将数组转换成指定格式字符串
join方法默认情况下如果没有传递参数, 就是调用toString();
join方法如果传递了参数, 就会将传递的参数作为元素和元素的连接符号;
let str = arr.join("+");

4.如何将两个数组拼接为一个数组

let arr1 = [1, 3, 5];
let arr2 = [2, 4, 6];

注意点: 数组不能够使用加号进行拼接, 如果使用加号进行拼接会先转换成字符串再拼接;

let res = arr1.concat(arr2);
注意点: 扩展运算符在解构赋值中(等号的左边)表示将剩余的数据打包成一个新的数组; 扩展运算符在等号右边, 那么表示将数组中所有的数据解开, 放到所在的位置;
 
 let res = [...arr1, ...arr2]; // let res = [1, 3, 5, 2, 4, 6];  //企业推荐用这种;
 
注意点: 不会修改原有的数组, 会生成一个新的数组返回给我们;

5.如何对数组中的内容进行反转
let res = arr.reverse();

  • 注意点: 会修改原有的数组;

6.如何截取数组中指定范围内容

slice方法是包头不包尾(包含起始位置, 不包含结束的位置);
xxx.slice(start,end); 其中end可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。

let res = arr.slice(1, 3)

7.如何查找元素在数组中的位置

indexOf方法如果找到了指定的元素, 就会返回元素对应的位置;
indexOf方法如果没有找到指定的元素, 就会返回-1;

  1. 注意点: indexOf方法默认是从左至右的查找, 一旦找到就会立即停止查找;

let res = arr.indexOf(3);

参数1: 需要查找的元素
参数2: 从什么位置开始查找
let res = arr.indexOf(3, 4);
  1. 注意点: lastIndexOf方法默认是从右至左的查找, 一旦找到就会立即停止查找;

8.如何判断数组中是否包含某个元素
let arr = [1, 2, 3, 4, 5];

我们可以通过 indexOf 和 lastIndexOf 的结果, 判断是否是-1即可;

let res = arr.indexOf(8);
let res = arr.lastIndexOf(8);

常用方法:
let res = arr.includes(4);

8.将输入数据转化成数组形式:

let str = prompt("请输入三个整数, 用逗号隔开");
console.log(str); // 1,3,5

字符串的split方法可以根据传入的参数切割字符串, 转换成一个数组之后返回给我们;
let arr = str.split(","); //注意:这里的逗号格式要正确写	

-End

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值