数组
1.数组:就是在内层中,开辟一段连续的空间,存储一组数据
如果需要维护多组数据,之前我们需要定义很多个变量,维护会相对比较麻烦
let score1 = 55;
let score2 = 66;
let score3 = 77;
let score4 = 88;
let score5 = 99;
//通过变量名获取变量中保存的数据
let sum1 = score1+score2
console.log(sum1); //输出121
//现在可以通过一个数组统一维护
let scores = new Array(5); //创建一个长度为5的数组空间(在内存中连续开辟了一个长度为5的存储空间)
2.通过数组的下标,往数组中存储数据
scores[0] = 55;
scores[3] = 66;
通过数组的下标,从数组的指定空间里面获取数据
let sum2 = scores[0] + scores[3]
console.log(sum2); //输出121
console.log(scores); //[55, empty × 2, 66, empty]
3.注意:在其他的编程语言中,定义数组时,必须要明确数组的长度,但是,js中不需要。
//在js中,数组的长度是弹性的
let scores2 = new Array()
scores2[0] = 55
scores2[8] = 66
console.log(scores2); //[55, empty × 7, 66]
4.在js中,定义数组有两种方式:1.采用数组的构造函数new,2.使用字面量直接赋值
let scores3 = new Array('苹果','香蕉')
console.log(scores3); //['苹果', '香蕉']
let scores4 = ['葡萄','榴莲']
console.log(scores4); //['葡萄', '榴莲']
5.length属性,返回数组的长度
console.log(scores4.length); //输出2
数组练习
1.定义数组保存5名学生的成绩,并算出5名学生的平均分
let scores = new Array(5); //创建一个长度为5的数组
let sum = 0; //定义总分
//循环出数组的所有下标
for(let i=0;i<scores.length;i++){
// 通过数组的下标,给数组的指定空间赋值
scores[i] = parseInt(prompt(`请输入第${i+1}位学员成绩:`))
//累加总分
sum += scores[i];
}
console.log('所有学生的成绩:'+scores);
console.log('学生的平均分:'+(sum/5));
数组的常用方法
1.concat()方法,用于合并两个或多个数组,返回一个全新的数组
let arr1 = [11,22,33]
let arr2 = [44,55,66]
let arr3 = arr1.concat(arr2)
console.log(arr3); //输出[11, 22, 33, 44, 55, 66]
2.copyWithin()方法,从数组的指定位置拷贝元素到数组的另一个指定位置中
注意:第一个参数是目标位置,第二个参是拷贝元素的起始位,第三个参数是拷贝元素的结束位置(取不到结束位置)。如果不设置第三个参数,表示从拷贝元素的起始位到最后全部返回。
注意:拷贝元素是覆盖原元素,最终的数组的长度是不变的。
let arr4 = [11,22,33,44,55,66,77,88]
let arr = [11,22,33,44,55,66,77,88]
arr4.copyWithin(2,4,6);
arr.copyWithin(2,4);
console.log(arr4); //输出[11, 22, 55, 66, 55, 66, 77, 88]
console.log(arr); //输出[11, 22, 55, 66, 77, 88, 77, 88]
3. fill()方法,使用一个固定值来填充数组
let arr5 = new Array(5)
arr5.fill(50)
console.log(arr5); //输出[50, 50, 50, 50, 50]
4.includes()方法,从数组中检查指定的数据是否存在,存在返回true,不存在返回false
indexOf()方法,从数组中检查指定的数据的位置(从前往后找第一个),不存在返回-1
lastIndexOf()方法,从数组中检查指定的数据的位置(从后往前找第一个),不存在返回-1
let arr6 = [11,22,33,44,55,44,77,88]
console.log(arr6.includes(44)); //输出true
console.log(arr6.includes(38)); //输出false
console.log(arr6.indexOf(44)); //输出3
console.log(arr6.indexOf(38)); //输出-1
console.log(arr6.lastIndexOf(44)); //输出5
console.log(arr6.lastIndexOf(38)); //输出-1
5.isArray()方法,用于检查指定的对象是否是数组,注意:该方法属于Array类型,不属于Arrary的对象
let str1 = 'hello'
console.log(Array.isArray(str1)); //输出false
console.log(Array.isArray(arr6)); //输出true
6.join()方法,用于将一个数组根据某个字符串拼接成字符串,该方法不传参数,默认是根据逗号拼接
console.log(arr6.join('你好呀')); //输出11你好呀22你好呀33你好呀44你好呀55
你好呀44你好呀77你好呀88
console.log(arr6.join('')); //输出1122334455447788
console.log(arr6.join()); //输出11,22,33,44,55,44,77,88
7.push()方法,向数组的末尾添加一个或更多元素,并返回新的长度
let arr7 = [11,22,33]
arr7.push(44)
console.log(arr7); //输出[11, 22, 33, 44]
8.pop()方法,删除数组的最后一个元素并返回删除的元素
arr7.pop()
console.log(arr7); //输出[11, 22, 33]
9.unshift()方法,向数组的开头添加一个或更多元素,并返回新的长度
arr7.unshift(55)
console.log(arr7); //输出[55, 11, 22, 33]
10.shift()方法,删除并返回数组的第一个元素
arr7.shift()
console.log(arr7); //输出[11, 22, 33]
11.reverse()方法,反转数组的元素顺序
arr7.reverse()
console.log(arr7); //输出[33, 22, 11]
12.slice()方法,选取数组的一部分,并返回一个新数组
注意:该方法的第一个参数是起始位置,第二个参数是结束位置(取不到结束位置)
第二个参数可以省略,表示从起始位置到最后全部返回
let arr8 = [11,22,33,44,55,66,77,88,99]
console.log(arr8.slice(3,6)); //输出[44, 55, 66]
console.log(arr8.slice(3)); //输出[44, 55, 66, 77, 88, 99]
13.repeat()是字符串的方法,用于重复指定的字符串多少次
console.log('!'.repeat(30)); //输出!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
14.splice()方法,从数组中添加或删除元素
如何删除,该方法需要传两个参数:第一个是起始位置,第二个是删除长度
如果第二个参数不传,就表示从起始位置往后全部删除
删除方法,删除的是原始数组里面的数据,返回的是删除的数据
该方法也可以传三个参数,第三个参数就是删除部分插入的新内容
// arr8.splice(4,3) //删除指定区间的数据
// arr8.splice(4) //从起始位置往后全部删除
// arr8.splice(4,3,'哈哈') //删除部分的内容替换成新的内容(修改数组的内容)
arr8.splice(4,0,'哈哈') //在数组的指定位置插入内容
console.log(arr8); //输出[11, 22, 33, 44, '哈哈', 55, 66, 77, 88, 99]
15.toString()方法,把数组转换为字符串,并返回结果。效果跟join方法不传参数一样。
console.log(arr8.toString()); //输出11,22,33,44,哈哈,55,66,77,88,99
反转字符串
split()方法,用于将字符串根据某个字符串打散成数组
let s1 = "我喜欢吃苹果,喜欢吃桃子,喜欢吃香蕉"
// 将字符串根据“喜欢”打散成数组
console.log(s1.split('喜欢')); //输出['我', '吃苹果,', '吃桃子,', '吃香蕉']
// 将字符串中的所有字符打散成数组
console.log(s1.split('')); //输出['我', '喜', '欢', '吃', '苹', '果', ',', '喜', '欢', '吃', '桃', '子', ',', '喜', '欢', '吃', '香', '蕉']
let str = '好好学习,天天向上'
// 01.将字符串打散成数组
let arr = str.split('')
// 02.数组反转一下
arr.reverse()
// 03.将数组拼接陈字符串
let str2 = arr.join('')
console.log(str2); //输出上向天天,习学好好
//字符串和数组的所有方法,可以链式调用
console.log(str.split('').reverse().join('')); //输出上向天天,习学好好