一、改变原始数组的方法:
1、pop()
pop() 方法移除数组的最后一个元素,并返回该元素。
注意:pop() 方法会改变数组的长度。
pop() 返回它删除的元素:
let teams = ["Lakers", "Jazz", "Rockets", "Suns"];
teams.pop(); //'Suns'
2、push()
push() 方法向数组末尾添加新项目,并返回新长度。
提示:新的项目将被添加到数组的末尾。
注释:push() 方法会改变数组的长度。
向数组添加一个新项目:
let teams = ["Lakers", "Jazz", "Rockets", "Suns"];
teams.push("Warriors"); //5
console.log(teams) //(5) ['Lakers', 'Jazz', 'Rockets', 'Suns', 'Warriors']
3、reverse()
reverse() 方法反转数组中元素的顺序。
注释:reverse() 方法将改变原始数组。
反转数组中元素的顺序:
let teams = ["Lakers", "Jazz", "Rockets", "Suns"];
teams.reverse() //(4) ['Suns', 'Rockets', 'Jazz', 'Lakers']
4、shift()
shift() 方法移除数组的第一项。
注释:shift() 方法会改变数组的长度。
注释:shift 方法的返回值是被移除的项目。
注释:shift() 方法会改变原始数组。
删除数组中的第一个项目:
let teams = ["Lakers", "Jazz", "Rockets", "Suns"];
teams.shift() //'Lakers'
5、unshift()
unshift() 方法将新项添加到数组的开头,并返回新的长度。
注释:unshift() 方法会改变数组的长度。
提示:如需在数组末尾添加新项,请使用 push()方法。
将新项目添加到数组的开头:
let teams = ["Lakers", "Jazz", "Rockets", "Suns"];
teams.unshift("Kings","Spurs") //6
console.log(teams)//(6) ['Kings', 'Spurs', 'Lakers', 'Jazz', 'Rockets', 'Suns']
6、sort()
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。
如果想按照其他标准进行排序,就需要提供比较函数,该函数要比较两个值,然后返回一个用于说明这两个值的相对顺序的数字。比较函数应该具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
let points = [40,100,1,5,25,10];
points.sort((a,b) => { return b - a }) //(6) [100, 40, 25, 10, 5, 1]
7、splice()
splice() 方法向/从数组添加/删除项目,并返回删除的项目。
注释:splice() 方法会改变原始数组。
let teams = ["Lakers", "Jazz", "Rockets", "Suns"];
teams.splice(2,1,"Kings","Spurs") //['Rockets']
console.log(teams) //(5) ['Lakers', 'Jazz', 'Kings', 'Spurs', 'Suns']
二、不改变原始数组的方法:
1、concat()
concat() 方法用于连接两个或多个数组。
concat() 方法不会更改现有数组,而是返回一个新数组,其中包含已连接数组的值。
let team1 = ["Lakers", "Jazz", "Rockets", "Suns"];
let team2 = ["Kings","Spurs"]
team1.concat(team2) //(6) ['Lakers', 'Jazz', 'Rockets', 'Suns', 'Kings', 'Spurs']
2、join()
join() 方法将数组作为字符串返回。
元素将由指定的分隔符分隔。默认分隔符是逗号 (,)。
let team = ["Lakers", "Jazz", "Rockets", "Suns"];
team.join() //'Lakers,Jazz,Rockets,Suns'
team.join('') //'LakersJazzRocketsSuns'
team.join('!') //'Lakers!Jazz!Rockets!Suns'
3、slice()
slice() 方法以新的数组对象,返回数组中被选中的元素。
slice() 方法选择从给定的 start 参数开始的元素,并在给定的 end 参数处结束,但不包括。
let team = ["Lakers", "Jazz", "Rockets", "Suns"];
team.slice(1,3) //(2) ['Jazz', 'Rockets']
console.log(team) //(4) ['Lakers', 'Jazz', 'Rockets', 'Suns']
4、JSON.parse(JSON.stringify(arry))
这种方式会重新复制一个数组。也是实现深拷贝的一种方式。
let arr = [1,2,3];
JSON.parse(JSON.stringify(arr)) //(3) [1, 2, 3]
JSON.parse(JSON.stringify(arr))==arr // false,两个不同的内存引用地址,所以不相等
5、map()
map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
map() 方法按照原始数组元素顺序依次处理元素。
注意: map() 不会对空数组进行检测。
注意: map() 不会改变原始数组。
let a =[1,2,3,4]
let b = a.map((item)=>{
return item + 1
})
console.log(a) //(4) [1, 2, 3, 4]
console.log(b) //(4) [2, 3, 4, 5]
6、some()
some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。
some() 方法会依次执行数组的每个元素:
如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。
如果没有满足条件的元素,则返回false。
注意: some() 不会对空数组进行检测。
注意: some() 不会改变原始数组。
let a = [1,2,3,4]
let d = a.some((item)=>{
return item===1
})
console.log(a) //(4) [1, 2, 3, 4]
console.log(d) // true
7、every()
every() 方法用于检测数组所有元素是否都符合指定条件(通过函数提供)。
every() 方法使用指定函数检测数组中的所有元素:
如果数组中检测到有一个元素不满足,则整个表达式返回 false ,且剩余的元素不会再进行检测。
如果所有元素都满足条件,则返回 true。
注意: every() 不会对空数组进行检测。
注意: every() 不会改变原始数组。
let a = [1,2,3,4]
let c = a.every((item)=>{
return item===1
})
console.log(a) //(4) [1, 2, 3, 4]
console.log(c) // false
8、filter()
filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
注意: filter() 不会对空数组进行检测。
注意: filter() 不会改变原始数组。
let a = [1,2,3,4]
let c = a.filter((item)=>{
return item===1
})
console.log(a) //(4) [1, 2, 3, 4]
console.log(c) // [1]