✊总有人要成为第一,为什么不是你。
2021年08月04日
工作重点
1 | 工作重点事项 | 进度 | 已完成 |
---|---|---|---|
2 | 早上讲JavaScript数组的方法 | 已完成 | - [x] |
|
| 3 | 下午讲JavaScript数组的方法 | 已完成 |
- [x]
|
| 4 | 晚上做练习 | 已完成 |
- [x]
|
遇到的问题和解决思路
遇到的问题
- 当删除重复元素的时候,会漏掉
-
解决思路
记得删除后,要i—
今日总结
(1)数组的操作方法
<!DOCTYPE html>
(2)数组的检索
<!DOCTYPE html>
(3)数组转字符串
<!DOCTYPE html>
<!DOCTYPE html>
(4)数组的方法
(5)数组的方法
<!DOCTYPE html>
(6)清空数组的方法
<!DOCTYPE html>
1.8 数组方法
学习数组的方法要关注以下3个重点:
- 方法参数
- 返回值
- 改变不改变原数组
1.8.1 栈方法和队列方法
改变原数组
方法名称 | 功能描述 |
---|---|
push() | 将一个或多个元素添加到数组的末尾,并返回数组的新长度。改变原数组 |
unshift() | 将一个或多个元素添加到数组的开头,并返回数组的新长度。改变原数组 |
pop() | 从数组的末尾移出并返回移出数组的一个元素,若是空数组则返回undefined。改变原数组 |
shift() | 从数组的开头移出并返回移出数组的一个元素,若是空数组则返回undefined。改变原数组 |
不改变原数组
- array.includes(item, start):用于确定数组中是否含有某个元素,含有返回true,否则返回false。
- item是查找的元素。
- start可选,规定在数组中开始检索的位置(包含本身的位置)。
- 返回值为true,false。
- 如果start为负值,则按照从后往前开始找索引开始的位置。
- 如果 array.length + start为负值,则整个数组都会被搜索。
- 如果start大于等于数组长度 ,则返回 false 。该数组不会被搜索。
- indexOf(item,start):检测当前值在数组中第一次出现的位置索引,返回值是在数组中可以找到给定值的第一个索引,如果不存在,则返回-1。
- item是查找的元素。
- start可选,规定在数组中开始检索的位置(包含本身的位置)。
- 返回值是在数组中可以找到给定值的第一个索引,如果不存在,则返回-1。
- 如果start为负值,则从最后一项开始算起,-1为最后一项,-2为倒数第二项。
- 如果 array.length + start为负值,则整个数组都会被搜索。
- 如果start大于等于数组长度 ,则返回-1 。该数组不会被搜索。
- lastIndexOf(item,start):检测当前值在数组中最后一次出现的位置索引,从数组的后面向前查找,从 start处开始。
- item是查找的元素。
- start可选,规定在数组中开始检索的位置(包含本身的位置)。
- 返回指定元素在数组中的最后一个的索引,如果不存在则返回 -1。
- 如果start为负值,则从最后一项开始算起,-1为最后一项,-2为倒数第二项。
- 如果 array.length + start为负值,则该数组不会被搜索,则返回 -1。
- 如果start大于等于数组长度 ,则整个数组都会被搜索。
- Array.isArray()用于确定传递的值是否是一个 Array,是返回true,不是返回false
var data = ['peach', 'pear', 26, '26', 'grape'];
// 从数组下标为3的位置开始检索数字26
console.log(data.includes(26, 3)); // 输出结果:false
// 从数组下标为data.length - 3 的位置查找数字26
console.log(data.includes(26, -3)); // 输出结果:true
console.log(data.includes(26, -100)); // 输出结果:true
// 判断变量data是否为数组
console.log(Array.isArray(data)); // 输出结果:true
var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.indexOf("Apple",4);//6
var fruits=["Banana","Orange","Apple","Mango","Banana","Orange","Apple"];
var a = fruits.lastIndexOf("Apple",4);//2
1.8.3 数组转字符串
不改变原数组
方法名称 | 功能描述 |
---|---|
join() | 将数组的所有元素连接到一个字符串中。 |
toString() | 返回一个字符串,表示指定的数组及其元素。 |
var arr = ['a','b','c'];
console.log(arr.join()); // 输出结果:a,b,c
console.log(arr.join('')); // 输出结果:abc
console.log(arr.join('-')); // 输出结果:a-b-c
console.log(arr.toString()); // 输出结果:a,b,c
注意:
join()和toString()方法的相同点:
可将多维数组转为字符串,默认情况下使用逗号连接。 当数组元素为undefined、null或空数组时,数组会被转换为空字符串
join()和toString()方法的不同点:
join()方法可以指定连接数组元素的符号。
1.8.4 其他方法
splice():方法通过删除或替换现有元素或者原地添加新的元素来修改数组
- 返回值:以数组形式返回被修改的内容。
- 改变原数组。
语法:
array.splice(index,howmany,item1,…..,itemX)
参数 | 描述 |
---|---|
index | 必需。规定从何处添加/删除元素。 该参数是开始插入和(或)删除的数组元素的下标,必须是数字。 |
howmany | 可选。规定应该删除多少元素。必须是数字,但可以是 “0”。 如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。 |
item1, …, itemX | 可选。要添加到数组的新元素 |
对数组进行增删改
增加:arr.splice(index, 0, item)
- 从索引index开始, howmany(可选):0
- 把item或者更多的内容插入到索引index的前面
- 返回值:返回空数组
修改: arr.splice(index, x, item)
- 从索引index开始,删除x个元素, item替换删除的部分
- 把原有内容删除掉, 然后用新内容替换掉
- 返回值:修改掉原有内容的数组
删除:arr.splice(index,x)
- 从索引index开始,删除x个元素
- (如果第二个参数省略, 则从index删除到末尾)
- 返回值:删除掉原有内容的数组
//增加
var ary1 = [33,44,55,66,77,88];
ary1.splice(2,0,'a','b')
console.log(ary1);// [33, 44, "a", "b", 55, 66, 77, 88]
//修改
var ary2 = [33,44,55,66,77,88];
ary2.splice(1,2,'x','y')
console.log(ary2);// [33, "x", "y", 66, 77, 88]
//删除
var ary3 = [33,44,55,66,77,88];
//console.log(ary3.splice(3,2))//[66, 77]
console.log(ary3.splice(3));//[66, 77, 88]
slice()(复制原数组的部分内容)
- 返回值:返回一个新数组
- 不改变原数组
语法:
array_.slice(_start, end)
参数 | 描述 |
---|---|
start | 可选。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。如果省略 start ,则 slice 从索引 0 开始。 |
end | 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。(不包含end) |
- 参数:
array.slice(start, end),从索引start开始查找到end处(不包含end)
array.slice(start) 第二个参数省略,则一直查找到末尾
array.slice(0)原样输出内容,可以实现数组克隆
array.slice(-start,-end) slice支持负参数,从最后一项开始算起,-1为最后一项,-2为倒数第二项
var ary1 = [1,2,3,4,5,6,7,8,9];
//console.log(ary1.slice(2,8));//从索引2开始查找到索引为8的内容,结果为[3, 4, 5, 6, 7, 8]
//console.log(ary1.slice(0));
console.log(ary1.slice(-2,-1));//[8]
reverse():把数组倒过来排列
- 参数:无
- 返回值:倒序后新数组
- 改变原数组
var ary1 = [6,8,10,12];
console.log(ary1.reverse());//[12, 10, 8, 6]
concat(value1[, value2[, …[, valueN]]]):用于连接两个或多个数组
- 参数:value可选,参数可以是具体的值,也可以是数组对象。可以是任意多个
- 返回值:返回连接后的新数组
- 不改变原数组
var ary1 = ['你'];
var ary2 = ary1.concat('好');
console.log(ary2);//["你", "好"]
1.8.5 清空数组(内容)
// 方式1 推荐
arr = [];
// 方式2
arr.length = 0;
// 方式3
arr.splice(0, arr.length);
arr.splice(0);
数组方法总结:
//改变原数组方法:
var arr = [];
arr.push();
arr.pop();
arr.unshift();
arr.shift();
arr.splice();
arr.reverse();
//不改变原数组方法:
var arr = [];
arr.includes();
arr.indexOf();
arr.lastIndexOf();
arr.slice();
arr.join();
arr.toString();
arr.concat();
自己总结
数组方法总结:
//改变原数组方法:
var arr = [];
arr.push();
arr.pop();
arr.unshift();
arr.shift();
arr.splice();
arr.reverse();
//不改变原数组方法:
var arr = [];
arr.includes();
arr.indexOf();
arr.lastIndexOf();
arr.slice();
arr.join();
arr.toString();
arr.concat();
当去重数组中的一个元素时,记得删除后i—,不要让i向后,防止漏掉