一、创建数组的方法
1、数组字面量
//字面量
var arr1 = []; //创建一个空数组
var arr2 = [1,2,3]; //创建一个包含三个元素的数组
2、使用new关键字构造函数创建数组
//使用new关键字构造函数创建数组
var arr3 = new Array(); // 创建一个空数组
var arr4 = new Array(1, 2, 3); // 创建一个包含三个元素的数组
var arr5 = new Array('apple', 'banana', 'orange'); // 创建一个包含字符串元素的数组
var arr6 = new Array(5); //创建一个长度为5的数组
3、新建数组的声明方式(关键字)
var:可以随时被修改或重新分配,ES6发布前用
let:声明一个块作用域的变量,let可以被赋值,不能重复声明
const:const声明常量,表示该变量引用的数组不能被重新赋值,但数组本身可变
let和const是ES6新发布的
//新建数组
var arr2 = [1,2,3]; //创建一个包含三个元素的数组
const a1=[1,2,3] //const声明常量,表示该变量引用的数组不能被重新赋值,但数组本身可变
const arr = Object.freeze([1, 2, 3]);//可以利用Object.freeze方法,将数组冻结,使其不能被修改
let a2=[1,2,3] //let声明变量,声明一个块作用域的变量,let可以被赋值,不能重复声明
分清声明变量和赋值的区别
a2=[3,4,4] //这叫赋值
var arr1 = [1,2,3]; //这叫声明
二、操作数组的方法
push()、pop()、sort()、splice()、unshift()、shift、reverse()、concat()、join()、map()、filter()、ervery()、some()、reduce()、isArray()、findIndex()
哪些方法会改变数组?
push()、unshift()、pop()、shift、sort()、splice()、reverse()
1、push()/unshift()添加
push():在数组的末尾添加一个或多个元素,并返回新的长度。
const arr = [1, 2, 3];
arr.push(4,5,6); //结果arr=[1,2,3,4,5,6]
console.log(arr);
unshift():向数组的开头添加一个或多个元素,并返回新的长度。
const arr = [1, 2, 3];
arr.unshift(5,6);
console.log(arr);//结果arr=[,5,6,1,2,3,4]
2、pop()/shift() 删除
pop()删除数组末尾的元素,并返回该元素的值。
const arr = [1, 2, 3];
console.log(arr.pop()); //结果arr=[1,2]
shift()删除数组第一个元素,并返回该元素的值。
const arr = [1, 2, 3];
arr.shift();
console.log(arr); //结果arr=[2,3]
3、sort
sort():按升序排列数组项——即最小的值位于最前面,最大的值排在最后面
重点:
sort比较的是字符串,即使数组里是数值,比较的也是字符串,会发生错误
sort会改变原数组,谨慎使用
const arr = [9,5,11,13,1,34];
console.log(arr.sort()); //结果 [1, 11, 13, 34, 5, 9] 是错误的,没有升序
const arr1 = ['a',"b","e","d","p","c"];
console.log(arr1.sort()); //结果['a', 'b', 'c', 'd', 'e', 'p'] 正确
为了解决上述问题,sort()方法可以接收一个比较函数作为参数,指定哪个值位于哪个值的前面。比较函数接收两个参数,如果第一个参数应该位于第二个之前则返回一个负数,如果两个参数相等则返回 0,如果第一个参数应该位于第二个之后则返回一个正数。
const arr = [9,5,11,13,1,34];
function px(a1,a2){
return a1-a2;
}
console.log(arr.sort(px)); //结果[1, 5, 9, 11, 13, 34]
4、 splice()删除 / 添加 / 替换
//删除
数组名.splice(从第几位开始,删除长度);
//新增
数组名.splice(从第几位开始,删除长度为0,要添加的元素); //可以添加一个值,也可以添加多个值//替换
数组名.splice(从第几位开始,删除长度,要添加的元素);
//删除 数组名.splice(从第几位开始,删除长度);
const arr = [1,2,3,4,5,6];
arr.splice(1,2)
console.log(arr); //结果[1,4,5,6]
//新增 数组名.splice(从第几位开始,删除长度为0,要添加的元素);
const arr = [1,2,3,4,5,6];
arr.splice(1,0,8,9,10)
console.log(arr); //结果[1, 8, 9, 10, 2, 3, 4, 5, 6]
// 替换 数组名.splice(索引,删除长度,要添加的元素);
const arr = [1,2,3,4,5,6];
arr.splice(1,2,8,9,10)
console.log(arr); //结果 [1, 8, 9, 10, 4, 5, 6]
5、reverse()反转数组项的顺序
const arr =[8,3,5,7,2]
console.log(arr.reverse());//结果 [2, 7, 5, 3, 8]