方法
push
pop
shift
unshift
splice
arr.splice(start[, deleteCount, elem1, ..., elemN])
start开始位置,deleteCount删除的个数,elem1是补充的元素
let arr = ["I", "study", "JavaScript", "right", "now"];
// remove 3 first elements and replace them with another
arr.splice(0, 3, "Let's", "dance");
返回删除后的结果
let arr = ["I", "study", "JavaScript", "right", "now"];
// 删除前两个元素
let removed = arr.splice(0, 2);
deleteCount为0,则可以当插入使用
let arr = ["I", "study", "JavaScript"];
// 从索引 2 开始
// 删除 0 个元素
// 然后插入 "complex" 和 "language"
arr.splice(2, 0, "complex", "language");
start为负数,则从数组尾部开始算
slice
arr.slice([start], [end])
返回一个新数组
start和end都可以为负数,从末尾计算索引
不包括end
从0开始计算
有个小用途,可以用于复制一个新的数组,如下:arr.slice()
concat
创建一个新数组,其中包含来自于其他数组和其他项的值。
arr.concat(arg1, arg2...)
foreach((item,index,array)=>{})
indexOf
与字符串的相同
str.indexOf(查找项,开始位置pos)
严格按照===三等号匹配
inclouds
也是按照===等号匹配
特殊:NaN查找为true,indexOf则为-1
find
特点:查找特定条件的内容
let result = arr.find(function(item, index, array) {
// 如果返回 true,则返回 item 并停止迭代
// 对于假值(falsy)的情况,则返回 undefined
});
注意:find 方法搜索的是使函数返回 true 的第一个(单个)元素,一个一个一个
filter
let results = arr.filter(function(item, index, array) {
// 如果 true item 被 push 到 results,迭代继续
// 如果什么都没找到,则返回空数组
});
可以返回多个元素
map
let result = arr.map(function(item, index, array) {
// 返回新值而不是当前元素
})
一般用来转换数组用的
let lengths = ["Bilbo", "Gandalf", "Nazgul"].map(item => item.length);
alert(lengths); // 5,7,6
sort(fn)
默认是按照字符串排序
let arr = [ 1, 2, 15 ];
// 该方法重新排列 arr 的内容
arr.sort();
alert( arr ); // 1, 15, 2
可以自定义比较的函数
实际上,比较函数只需要返回一个正数表示“大于”,一个负数表示“小于”。
通过这个原理我们可以编写更短的函数:
let arr = [ 1, 2, 15 ];
arr.sort(function(a, b) { return a - b; });
alert(arr); // 1, 2, 15
reverse
颠倒数组的顺序
let arr = [1, 2, 3, 4, 5];
arr.reverse();
alert( arr ); // 5,4,3,2,1
split
let arr = names.split(', ');
给定的分隔符,进行分割
空参数也可以
let str = "test";
alert( str.split('') ); // t,e,s,t
join
let arr = ['Bilbo', 'Gandalf', 'Nazgul'];
let str = arr.join(';'); // 使用分号 ; 将数组粘合成字符串
alert( str ); // Bilbo;Gandalf;Nazgul
与split正好相反,粘合用的
reduce
像极了java里面的规约
let arr = [1, 2, 3, 4, 5];
// 删除 reduce 的初始值(没有 0)
let result = arr.reduce((sum, current) => sum + current);
alert( result ); // 15
let value = arr.reduce(function(accumulator, item, index, array) {
// ...
}, [initial]);
accumulator —— 是上一个函数调用的结果,第一次等于 initial(如果提供了 initial 的话)。
item —— 当前的数组元素。
index —— 当前索引。
arr —— 数组本身。
Array.isArray
判断是否为array数组
alert(Array.isArray([])); // true
typeof不足以支撑判断是否为array了,因为数组也是对象,返回的都是object
请注意,sort,reverse 和 splice 方法修改的是数组本身。
其他:same,every,fill,flatMap,Array.of(),不太用