作者:马小跳 时间:2019-7-25(今天总得做些什么吧)
总结JavaScript数组的一些方法
-如果需要查找某些方法,建议ctrl+F进行需要查找
检测数组
判断某个对象是不是数组
- value instanceof Array //只有一个全局执行环境
- Array.isArray(value) //es5方法
- Object.prototype.toString.call(value) == ‘[object Array]’ //填鸭式去判断,比较精确的判断
操作方法
- splice(拼接)
- 作用:可以用于数组的删除 插入 替换;
- 参数:
- 第一个参数代表删除的开始位置i
- 第二个参数代表需要删除的个数j
- 第三个以后代表着需要插入到i之后的参数
- 结果:对原数组进行操作
var a = [1,2,3,4,5,6,7,8];
a.splice(0,0,11,11);
console.log(a);//[ 11, 11, 1, 2, 3, 4, 5, 6, 7, 8 ]
- slice(片)
- 作用:对数组进行截取
- 参数:
- 第一个参数是截取的开始位置
- 第二个参数是截取的结束位置(不包括这个位置)
- 如果第一个和第二个参数都是负数,并且第一个小于第二个,编译时会自动地将符数加上数组地总长度
console.log(a.slice(-2,-1));//[7]
- 如果都是正数或加上数组长度之后,第一个参数大于第二个参数,会返回空(不会自动地将两个参数进行调换)
- 如果第一个和第二个参数都是负数,并且第一个小于第二个,编译时会自动地将符数加上数组地总长度
- 结果:不会影响原数组,返回截取数组的部分
数组迭代方法
- 下列方法都有三个参数:item(代表着循环中地每一项),index(每一项地下表),array(数组)
- every():对数组进行每一项判断,只有全部符合才返回true
var b = a.every(function (item,index,array) {
return item>2;
});//false
- some():对数组进行每一项判断,部分满足即可返回true
var b = a.some(function (item,index,array) {
return item>2;
});//true
- filter():对数组进行过滤,返回满足条件地数组
var b = a.filter(function (item,index,array) {
return item>2;
});
console.log(b)//[ 3, 4, 5, 6, 7, 8 ]
- forEach():简单遍历数组,不返回任何东西
a.forEach(function (item,index,array) {
console.log(item);
});
- map():对数组的每一项进行对应的操作,返回通过函数处理后的数组
var b =a.map(function (item,index,array) {
return item*2;
});
console.log(b);//[ 2, 4, 6, 8, 10, 12, 14, 16 ]
位置方法
- indexOf()/lastIndexOf()
- 接收两个参数:第一个参数代表需要查找地内容,第二个参数代表从那个地方开始查找(默认为0)
- 返回:返回需要查找地位置(index),第一个是顺序查找查找,第二个是倒叙查找方法
console.log(a.indexOf(8));//7
如果没有查找到就会返回-1
归并方法
- reduce()/reduceRight()
- 迭代所有相,然后构建一个最终返回地值
- 参数:第一个是前一项,第二个是当前项,第三个是当前项的index,第四个是整个数组
- 第二个方法就是倒过来迭代
var b = a.reduce(function (pre,cur,index,array) {
return pre+cur;
});
console.log(b);//36
重排序方法
- sort():默认是升序排列,sort()方法会调用每个数组项地toString()转型方法,然后比较得到的字符串(所以就算是数值,默认情况下还是按照字符串排序)
- sort()可以接收一个排列的函数,实质上是调用冒泡排序
- sort函数接收两个参数,value1是靠前,value2是靠后的数组项,如果value2 - value1是true,则会调换位置
a.sort(function (value1,value2) {
console.log(value1,value2)
return value2 - value1;
});
栈方法
- push()/pop()
- 第一个是将某项添加到数组末尾
- 第二个是将数组最后一项删除
队列方法
- shift():转变 转换/unshift():数组头部插入
- 第一个是将数组第一个删除
- 第二个是将某项添加到数组最开始
转换方法
- valueOf():返回数组本身
- toString():返回有数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串
- toLocaleString():和toString()返回值经常相同(对于Array没什么区别,对于Date、Number会根据地区的不同返回不同的形式)