数组方法

198 阅读4分钟

转字符串方法:

 toString:完全扁平化
 join('-'):只会分割第一层数组
 str.split: 字符串转数组方法

堆栈方法:

 push(尾部添加) => 返回增加数组后的长度
 pop(尾部删除) => 返回删除元素的值
 unshifl(头部添加) => 返回增加数组后的长度
 shifl(头部删除) => 返回删除元素的值

排序方法:

 sort =>  修改原数组,返回数组
     arr.sort((a, b) => a -b)顺序
     arr.sort((a, b) => b -a)倒序
 reverse() => 修改原数组,返回数组,顺序颠倒
 随机排序: 
         function compate(){
            return Math.random() - 0.5
         }
         arr.sort(compate)

拼接方法:

 concat => 返回新数组,不操作原数组,不能拼接多维数组

删改方法:

 slice(0, 2):参数1 截取的起始位置, 参数2 截取结束位置
                      不修改原数组,返回截取后的新数组
 splice(0, 2, '1'):参数1 起始:删除/增加的位置, 参数2 指定删除元素的个数, 参数3 插入的值
                            修改原数组,返回删除元素组成的数组,没有删除的元素返回为空数组
                            参数只有1位做删除操作,

查找索引:

indexOf(1): 参数1 查找当前数组中存在的中,存在返回索引位置,不存在返回-1,从左往右查找
lastIndexOf(1): 参数1 查找当前数组中存在的中,存在返回索引位置,不存在返回-1,从右往左查找
includes(1, 2):参数1 查找的值,参数2(可选) 索引位置:从索引位置开始查找
                查找值得方法用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false

数组(构造函数)的静态方法:

Array.of(参数...): 将类数组对象,转化为真正的数组
        Array.of()方法总是返回参数值组成的数组。如果没有参数,就返回一个空数组
        Array(参数):
              Array构造函数可以用来直接创建数组,Array方法没有参数、一个参数、三个参数时,返回结果都不一样。
        只有当参数个数不少于 2 个时,Array()才会返回由参数组成的新数组。参数个数只有一个时,这个参数还是
        Number类型,这个参数实际上是指定数组的长度。Array.of()方法基本上可以用来替代Array()或new Array(),
        并且不存在由于参数不同而导致的重载。它的行为非常统一

遍历方法

find:
    查找第一个满足条件的值,返回满足条件的元素的值,没有返回undefined
    arr.find(function(item,index,arr) {
        return item > 4
    })
    
findIndex:
    查找第一个满足条件的值,返回满足条件的元素下标,没有返回-1
    arr.find(function(item,index,arr) {
        return item > 4
    })

 forEach:
    参数1 回调函数, 参数2 指定当前this指向
    没有return(返回值),返回值为undefined,指定返回值依然是undefined
    不能使用breakcontinue,会报错
    类数组不能使用,需要转换为数组,或使用Array.prototype.forEach.call(类数组,function(item,index){console.log(item)}), [...类数组].forEach(item => {console.log(item)})
    空数组会直接跳过循环
    [1,2, ,4]: 对于稀疏数组,这个值不存在会跳过,普通for循环不会跳过
    let arr = [1,2,3,4,5,6]
    let obj = {
        a:1
    }
    arr.forEach(function(item,index,arr) {
        console.log(this) // 指向obj
    },obj)
    
 map:
    参数1 回调函数, 参数2 指定当前this指向
    需要指定返回值()return
    映射关系:根据原数组,能够返回一个跟原数组产生映射关系数组
    不指定返回值,返回undefined
    let arr = [1,2,3,4,5,6]
    let obj = {
        a:1
    }
    let arr1 = arr.map(function(item,index,arr) {
        return 
        console.log(this) // 指向obj
    },obj)
    
 filter:
     参数1 回调函数, 参数2 指定当前this指向
     需要指定返回值()return 返回满足条件的元素
     let arr = [1,2,3,4,5,6]
     let obj = {
        a:1
     }
     let arr1 = arr.filter(function(item,index,arr) {
        return item > 3
        console.log(this) // 指向obj
     },obj)
     
 some:
     参数1 回调函数, 参数2 指定当前this指向
     需要指定返回值()return 数组中有一项满足条件返回true,不满足返回false
     let arr = [1,2,3,4,5,6]
     let obj = {
        a:1
     }
     let arr1 = arr.some(function(item,index,arr) {
        return item > 3
        console.log(this) // 指向obj
     },obj)
     
 every:
     参数1 回调函数, 参数2 指定当前this指向
     需要指定返回值()return 数组中全部元素满足条件返回true,不满足返回false
     let arr = [1,2,3,4,5,6]
     let obj = {
        a:1
     }
     let arr1 = arr.every(function(item,index,arr) {
        return item > 3
        console.log(this) // 指向obj
     },obj)
     
 redece: 归纳函数,累加器
     参数一:回调函数
     参数二:初始值 初始值===函数的第一个参数
     return 返回累加完成后的值
     不指定第二个参数,从第一项开始循环
     指定第二个参数从第一项开始循环(初始值)
     let arr = [1,2,3,4,5,6]
     let arr1 = arr.redece(function(accumulator, currentVlue, currentIndex, arr) {
        return item * 2
     }, 10)