数组的方法
push()
:向数组末尾添加一个或多个元素,返回新的长度,会改变原数组
let arr1 = [1,2,3]
let length = arr1.push(4,5,6)
console.log(length);
console.log(arr1);
pop()
:删除数组最后一个元素,返回删除的元素,会改变原数组
let arr1 = [1,2,3]
let nums = arr1.pop()
console.log(nums);
console.log(arr1);
unshift()
:向数组开头添加一个或多个元素,返回新的长度,会改变原数组
let arr1 = [1,2,3]
let length = arr1.unshift(4,5,6)
console.log(length);
console.log(arr1);
shift()
:删除数组的第一个元素,返回删除的值,会改变原数组
let arr1 = [1,2,3]
let nums = arr1.shift()
console.log(nums);
console.log(arr1);
concat()
:连接两个或多个数组,返回一个新数组,不会改变原数组
let arr1 = [1,2,3]
let arr2 = [4,5,6,7,8]
let arr3 = arr1.concat(arr2)
let arr4 = arr1.concat([11,22,33,44])
console.log(arr3);
console.log(arr4);
join()
:将数组的元素放入到字符串中,,通过指定分隔符分隔,默认为,
,返回一个字符串,不改变原数组
let arr1 = [1,2,3]
let str1 = arr1.join()
let str2 = arr1.join(':')
console.log(str1);
console.log(str2);
console.log(typeof str1);
slice( start, end )
:返回一个新的数组,包含从start
到end
(左闭右开)的原数组中的元素,不会改变原数组
let arr1 = [1,2,3]
let arr2 = arr1.slice(0,2)
console.log(arr1);
console.log(arr2);
splice( start, deleteCount, replace)
:从index
处开始删除deleteCount
个数(左闭右开),并使用replace
的数来进行替换,返回被删除元素的数组,会改变原数组
let arr1 = [1,2,3]
console.log(arr1);
let arr2 = arr1.splice(1,0)
console.log(arr2);
let arr3 = arr1.splice(1,0,8)
console.log(arr1);
let arr4 = arr1.splice(1,1)
console.log(arr1);
sort()
:排序,返回排序过后的新数组,会改变原数组 : 最好手动规定排序的规则,默认排序易出现混乱
let arr1 = [1,2,5,3,8,56,89,5,89,3]
let arr2 = arr1.sort((a,b) => a - b)
console.log(arr2);
console.log(arr1);
let arr3 = arr1.sort((a,b) => b - a)
console.log(arr2);
console.log(arr1);
reverse()
:颠倒数组中元素的顺序,返回颠倒后的数组,会改变原数组
let arr1 = [1,4,6,3,8,9]
let arr2 = arr1.reverse(arr1)
console.log(arr1);
console.log(arr2);
filter()
:对数组中的每个元素执行指定函数,如果返回结果为true
则加入到新数组中,不改变原数组
let arr1 = [1,4,6,3,8,9]
let arr2 = arr1.filter( index => index > 3)
console.log(arr1);
console.log(arr2);
map()
:对数组中每个元素都执行指定函数,返回的结果组成一个新数组,不会改变原数组
let arr1 = [1,2,3,4,5,6]
let arr2 = arr1.map(index => ++index)
console.log(arr1);
console.log(arr2);
forEach()
:遍历数组
let arr1 = [1,2,3,4,5,6]
let arr2 = []
arr1.forEach(index => arr2.push(index))
console.log(arr2);
indexOf( searchElement, fromIndex )
和lastIndexOf( searchElement, fromIndex )
:都是查找是否存在存在某个值,不存在返回-1
,存在返回位置
let arr1 = [1,2,3,4,5,6]
let arr2 = [11,22,33,44,55,66]
let a = arr1.indexOf(1,0)
let aa = arr1.indexOf(1,1)
let b = arr2.lastIndexOf(22,5)
console.log(a,b);
console.log(aa);
every()
和some()
:都是对数组的每一项执行执行函数,every()
是全部都为true
时才返回true
,some()
是只要有一项为true
时都为true
。
let arr1 = [1,2,3,4,5,6]
let a = arr1.every(index => index > 5)
let aa = arr1.some(index => index > 5)
console.log(a);
console.log(aa);
ES6新增操作数组方法
find()
:传入一个回调函数,找到数组中符合搜索规则的第一个元素
let arr1 = [1,2,3,4,5,6,9]
let a = arr1.find(index => index/3 === 3)
console.log(a);
findIndex()
:传入一个回调函数,找到数组中符合搜索规则的第一个元素的下标
let arr1 = [1,2,3,4,5,6,9]
let a = arr1.findIndex(index => index/3 === 3)
console.log(a);
fill(value, start, end)
:使用新元素分别替换数组中start
到end
(左闭右开)的元素,会改变原数组
let arr1 = [1,2,3,4,5,6,9]
let arr2 = arr1.fill(666, 0,3)
console.log(arr1);
console.log(arr2);
copyWithin()
:选择数组的某个下标,从该位置开始复制数组元素,默认从0开始复制
let arr1 = [0,1,2,3,444,5,6,7,8,9]
let arr2 = [0,1,2,3,444,5,6,7,8,9]
let arr3 = [0,1,2,3,4,5,6,7,8,9]
let a = arr1.copyWithin(4)
let b = arr2.copyWithin(4,2)
let c = arr3.copyWithin(4,1,5)
console.log(a);
console.log(b);
console.log(c);
from()
:将类似数组的对象(array-like object)和可遍历(iterable)的对象转为真正的数组
let str1 = 'a,b,c,d'
let str2 = ['1','2','3','4']
let str3 = 'hello world'
let arr1 = Array.from(str1)
let arr2 = Array.from(str2)
let arr3 = Array.from(str3)
console.log(arr1);
console.log(arr2);
console.log(arr3);
entries()
:返回键值对,不改变原数组
let arr1 = [1,2,3,4,5]
let arr2 = arr1.entries()
for (const iterator of arr2) {
console.log(iterator);
}
let arr = new Set([1,2,3,'a','b'])
for (const iterator of arr.entries()) {
console.log(iterator);
}
let arr = new Map([['a',1],['b',2],[false,3],[true,4]])
arr.set(1,5)
console.log(arr);
for (const iterator of arr.entries()) {
console.log(iterator);
}
values()
:返回键值对中的value值,不改变原数组
let arr1 = [1,2,3,4,5]
let arr2 = arr1.values()
for (const iterator of arr2) {
console.log(iterator);
}
let arr = new Set([1,2,3,'a','b'])
for (const iterator of arr.values()) {
console.log(iterator);
}
let arr = new Map([['a',1],['b',2],[false,3],[true,4]])
arr.set(1,5)
for (const iterator of arr.values()) {
console.log(iterator);
}
keys()
:返回键值对中key的值,不改变原数组
let arr1 = [1,2,3,4,5]
let arr2 = arr1.keys()
for (const iterator of arr2) {
console.log(iterator);
}
let arr = new Set([1,2,3,'a','b'])
for (const iterator of arr.keys()) {
console.log(iterator);
}
let arr = new Map([['a',1],['b',2],[false,3],[true,4]])
arr.set(1,5)
for (const iterator of arr.keys()) {
console.log(iterator);
}
includes(searchElement, fromIndex)
:判断数组中是否存在该元素,可以替换ES5的indexOf()
方法, indexOf()
判断NaN会出现错误
let arr = [1,2,3,4,5,6,7,8,9,NaN]
let a = arr.indexOf(NaN)
let aa = arr.indexOf(4)
let b = arr.includes(NaN)
let bb = arr.includes(4)