本博客学习书籍:《学习JavaScript数据结构与算法》
本博客学习章节:第二章
常用的数组函数
对单个或多个数组元素进行操作的
-
unshift(value)
在数组首位插入元素,插入值会作为数组的第一个元素,返回值为数组修改后的长度
-
shift()
删除数组的第一个元素,返回值为被删除的元素
-
push(value)
在数组末尾插入元素,插入值会作为数组的最后一个元素,返回值为数组修改后的长度
-
pop()
删除数组的最后一个元素,返回值为被删除的元素
-
splice(index, length)
从下标index开始,删除length个元素
var arr = [1,2,3,5,6,7];
arr.splice(0,1);
arr.splice(arr.length - 1, 1);
-
splice(index, 0, 88, 99)
从下标index开始,删除0个元素,添加88,99两个元素
var arr = [1,2,3,5,6,7];
arr.splice(0, 0, 66);
arr.splice(arr.length, 0, 99);
-
slice( 0, 5)
从下标0开始,到下标5之前的元素作为新数组返回
var arr = [1,2,3,5,6,7];
arr.slice(0,5);
对整个数组进行操作的
创建数组
方法名 | 描述 | 返回值 |
---|
concat | 连接2个或多个数组 | 连接后的数组 |
— | es6、es7标准 | — |
copyWithin | 从数组的指定位置拷贝元素到数组的另一个指定位置中 | 数组 |
fill | 用静态值填充数组 | 数组 |
Array.from | 根据已有数组创建一个新数组(深拷贝) | 数组 |
Array.of | 根据传入的参数创建一个新数组(深拷贝) | 数组 |
var bigArr = [-3,-2,-1].concat([0], [1,2,3]);
var numStr = ['one', 'two', 'three', 'four', 'five','six'];
numStr.copyWithin(3,0,2);
numStr.fill('one',2,5)
let numArr = Array(10).fill(1);
var numStr1 = Array.from(numStr);
var numStr2 = Array.of(...numStr);
from
的更多用法请参考:ES6,Array.from()函数的用法
查找某个符合条件的
方法名 | 描述 | 返回值 |
---|
indexOf | 返回第一个与参数相等的数组元素的索引,没有找到返回-1 | 数组下标 或 -1 |
lastIndexOf | 返回最后一个与参数相等的数组元素的索引,没有找到返回-1 | 数组下标 或 -1 |
— | es6、es7标准 | — |
find | 根据回调函数的条件,返回查找到的元素 | 数组元素 或 undefined |
findIndex | 根据回调函数的条件,返回查找到的元素下标 | 数组下标 或 -1 |
includes | 查找某个元素(只能查找Number、String类型的元素) | Boolean |
var bigArr = [-2,0,1,2,7,6,8,2,-1];
var index1 = bigArr.indexOf(2);
var index2 = bigArr.lastIndexOf(2);
var bigArr = [{ name:'apple', age:1},{ name:'purple', age:2},{ name:'banana', age:2}];
var objSelected = bigArr.find((a)=>{ return a.age == 2})
var objSelectedIndex = bigArr.findIndex((a)=>{ return a.age == 2})
var bigArr = ['one','1one'];
var has8 = bigArr.includes('one')
排序
方法名 | 描述 | 返回值 |
---|
reverse | 数组倒序 | 倒序后的数组 |
sort | 按照字母顺序对数组排序,支持传入指定排序方法 | 排序后的数组 |
var bigArr = [-3,-2,-1,0,1,2,3];
var reverseArr = bigArr.reverse();
var sortArr = bigArr.sort();
var sortArr2 = bigArr.sort((a,b)=>{
return a - b;
});
var sortArr2 = bigArr.sort((a,b)=>{
return b - a;
});
迭代
方法名 | 描述 | 返回值 |
---|
filter | 过滤数组,筛选出满足条件的元素 | 过滤后的数组 |
map | 对每个数组元素执行函数后,组成新数组 | 执行后的新数组 |
forEach | 循环数组 | 无 |
every | 对数组中的每一项运行函数,如果该函数对每一项都返回true,则返回true | boolean |
some | 对数组中的每一项运行函数,只要有一项返回true,则返回true | boolean |
— | es6、es7标准 | — |
for...of | 循环数组 | 无 |
var bigArr = [-3,-2,-1].concat([0], [1,2,3]);
var isEveryZhenShu = bigArr.every(function(a){
return a > 0
});
var hasZhenShu = bigArr.some(function(a){
return a > 0
});
var zhenShuArr = bigArr.filter(function(a){
return a > 0
});
var nihaoArr = bigArr.map((r)=>{ return 'nihao: ' + r});
bigArr.forEach(function(a,index){
console.log(`第${index}个元素:${a}`);
})
for(let a of bigArr){
console.log(a > 0 ? (a % 2 == 0) ? a + ' even' : a + ' odd': a + ' 负数或0');
}
其他
方法名 | 描述 | 返回值 |
---|
join | 将所有的数组元素连接成一个字符串 | 字符串 |
reduce | 累加器 | 累加值 |
var bigArr = [1,2,3,4,5,6];
var selected = bigArr.join(',');
var selected2 = bigArr.toString();
var sum = bigArr.reduce((pre,curr,index)=>{
return pre + curr
});