push()
在数组的末尾添加一个或者多个元素,返回新的数组长度,原数组改变
let arr = ['A', 'B', 'C', 'D', 'E']
let count = arr.push('F')
console.log(count); // 6
console.log(arr); // ["A", "B", "C", "D", "E", "F"]
pop()
删除并返回数组的最后一个元素,原数组改变
let arr = ['A', 'B', 'C', 'D', 'E']
let count = arr.pop()
console.log(count); // E
console.log(arr); // ["A", "B", "C", "D"]
shift()
删除并返回数组的第一个元素,原数组改变
let arr = ['A', 'B', 'C', 'D', 'E']
let count = arr.shift()
console.log(count); // A
console.log(arr); // ["B", "C", "D", "E"]
unshift()
在数组的开头添加一个或者多个元素,返回新的数组长度,原数组改变
let arr = ['A', 'B', 'C', 'D', 'E']
let count = arr.unshift('F','G')
console.log(count); // 7
console.log(arr); // ["F", "G", "A", "B", "C", "D", "E"]
sort()
将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序,元素需为字符串才有效,若想对数字进行排序需要使用排序函数,原数组改变
字符串排序:
let arr = ["100", '1', "34", "466", '20', "42", "78", "799"]
console.log(arr.sort()) // ["1", "100", "20", "34", "42", "466"]
console.log(arr); // ["1", "100", "20", "34", "42", "466"]
数字:
let arr = [100, 1, 34, 466, 20, 42]
console.log(arr.sort()) // [1, 100, 20, 34, 42, 466]
console.log(arr); // [1, 100, 20, 34, 42, 466]
可以发现数字并不是按照数字的大小排序的,若想排序
let arr = [100, 1, 34, 466, 20, 42, 78, 799]
funct(a, b) {
return a - b //从小到大是a-b,从大到小是b-a
}
console.log(arr.sort(numSort)) // [1, 20, 34, 42, 78, 100, 466, 799]
console.log(arr); // [1, 20, 34, 42, 78, 100, 466, 799]
reverse()
用于颠倒数组中元素的顺序,原数组改变
let arr = ['Tom', 'Jack', 'Maria']
console.log(arr.reverse()); // ["Maria", "Jack", "Tom"]
console.log(arr); // ["Maria", "Jack", "Tom"]
join()
将数组转化成字符串,然后给他规定个连接字符,默认的是逗号,原数组不变
let arr = [1,2,3,4,5]
console.log(arr.join()); // 1,2,3,4,5
console.log(arr.join('-')) // 1-2-3-4-5
console.log(arr); // [1,2,3,4,5]
concat()
用于连接两个或多个数组,若传入的参数为具体的值,则将值添加到数组中,原数组不变,返回的为经过拼接后新的数组
参数是字符串:
let arr = ['a', 'b']
console.log(arr.concat('1', '2')); // ["a", "b", "1", "2"]
console.log(arr); // ["a", "b"]
参数是数组:
let arr = ['a', 'b']
let arr1 = ['c', 'd']
let arr2 = ['e', 'f']
console.log(arr.concat(arr1, arr2)); // ["a", "b", "c", "d", "e", "f"]
slice()
接收一个或两个参数(至少一个),分别代表返回项的开始位置(包括)和结束位置(不包括),若第一个参数如果是负数,那么它代表从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,若第二个参数为负数,那么它代表从数组尾部开始算起的元素,原数组不变,返回截取的数组
let arr = ["a", "b", "c", "d", "e", "f"]
console.log(arr.slice(2)); // [c", "d", "e", "f"]
console.log(arr.slice(2,5)); // ["c", "d", "e"]
console.log(arr.slice(-2)); // ["e", "f"]
console.log(arr.slice(-4,-1)); // ["c", "d", "e"]
splice()
向/从数组中添加/删除项目,支持传入两个或三个参数(至少两个),第一个参数为添加/删除项目的位置,第二个参数为删除的数目,第三个为可添加的项,该方法会改变原数组,返回被删除的项(若添加了项则返回空数组)
一个参数:截取数组位置1后面的参数返回新的数组
let arr = ["a", "b", "c", "d", "e", "f"]
console.log(arr.splice(1)); // ["b", "c", "d", "e", "f"]
console.log(arr); // ["a"]
两个参数:截取数组位置1后面3个参数返回新的数组
let arr = ["a", "b", "c", "d", "e", "f"]
console.log(arr.splice(1,3)); // ["b", "c", "d"]
console.log(arr); // ["a", "e", "f"]
三个参数:向数组位置2后面添加一个参数
let arr = ["a", "b", "c", "d", "e", "f"]
console.log(arr.splice(2,0,'g')); // []
console.log(arr); // ["a", "b", "g", "c", "d", "e", "f"]
indexOf()
用于在数组中查找某一项出现的位置,支持传入一个或两个参数(最少一个),第一个参数表示要查找的项,第二个参数表示从哪一项开始查找,不传时默认为0,找到则返回第一次找到的位置,未找到则返回-1
let arr = ["a", "b", "c", "d", "e", "f"]
console.log(arr.indexOf('f')); // 5
console.log(arr.indexOf('a', 3)); // -1
lastIndexOf()
接收两个参数:要查找的项和(可选的)表示查找起点位置的索引。其中, 从数组的末尾开始向前查找。
lastIndexOf()方法虽然是从后往前搜索,但返回的位置是从前开始数的。
let arr = ["a", "b", "d" , "c", "d", "e", "f"]
console.log(arr.lastIndexOf('d')); // 4
forEach()
用于遍历数组,forEach方法中的function回调有三个参数:第一个参数是遍历的数组内容,第二个参数是对应的数组索引,第三个参数是数组本身
let arr = [1, 2, 3]
arr.forEach(item => {
console.log(item);
});
输出:
1
2
3
map()
返回一个新数组,新数组中的元素为原始数组中的每个元素调用函数处理后得到的值。
let arr = [1, 2, 3, 4]
arr.map((item)=> {
console.log(item);
})
输出:
1
2
3
4
let arr = [1, 2, 3, 4]
function arrMap(arr) {
return arr.map((item, index) => {
return item*2
})
}
console.log(arrMap(arr)); // [2, 4, 6, 8]
filter
创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
let arr = [1,2,3,4,5]
let arr1 = arr.filter((item)=> {
return item > 2
})
console.log(arr1); // [3, 4, 5]
let arr = [
{
name: 'Maria',
id: '01'
},
{
name: 'Mike',
id: '02'
},
{
name: 'Jane',
id: '03'
},
{
name: 'Mike',
id: '04'
}
]
let arr1 = arr.filter(item => item.name =='Mike').map(item => item.id)
console.log(arr1); // ["02", "04"]
arr.filter(item => item.name ==‘Mike’)获取到数组[{name: “Mike”, id: “02”},{name: “Mike”, id: “04”}],最后再遍历得到该数组里面的某个元素对应的值返回数组
every和some
every()是对数组中的每一项运行给定函数,如果该函数对每一项返回true,则返回true。some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true。
let arr = [
{ isComplete: false, id: '01' },
{ isComplete: true, id: '02' },
{ isComplete: false, id: '03' },
{ isComplete: false, id: '04' }
]
console.log(arr.some( item => item.isComplete )) // true
console.log(arr.every( item => item.isComplete ));
// false
toString
将数组转化为字符串,可以实现拼接
let arr = [10, 20, 30, 40, 50]
console.log(arr.toString()); // 10,20,30,40,50
isArray
判断是否是数组
let arr = [10, 20, 30, 40, 50]
console.log(Array.isArray(arr)); //true