• 数组方法总结


    上周没事的时候把自己对数组方面的理解做了一下总结,知识点不深,方便以后的查阅。

    1.对象继承方法

    // 对象继承方法toString() toLocalString() valueOf()
    //toString()返回的结果是去掉数组两边的"[" "]",toLocalString()和前者相同,而valueOf()返回的则是数组本身
    var arr = [1,2,3]; console.log(arr.toString()) //1,2,3 console.log(arr.toLocaleString()) //1,2,3 console.log(arr.valueOf()) //[1,2,3]

    2.数组转换方法

    //数组转换方法
    var arr = [1,2,3];
    console.log(arr.join());//1,2,3
    console.log(arr.join(""));//123
    console.log(arr.join("-"));//1-2-3
    console.log(arr.join(undefined));//1,2,3(如果参数是undefined,标准浏览器返回逗号隔开的内容,ie7返回的是undefined的内容)

    3.栈和队列方法

    // 栈和队列方法 pop() push() shift() unshift()
    // 栈是一种LIFO last-in-first-out 后进先出的数据结构。也就是说最新添加的项最早被移除。
    // 队列是一种FIFO first-in-first-out 先进先出。队列在列表的末端添加项,在列表的前端删除项。
    // pop() push() shift() unshift() 都会改变数组的长度,因此会改变原始数组。
    var a = [];
    console.log(a,a.push(1));//[1],1
    console.log(a,a.push('wbin'));//[1,'wbin'],2
    var d = [];
    console.log(d.shift()) //undefined

    4.数组排序方法

    // 数组排序方法 sort(),reverse()两个方法都会改变原始数组
    var arr = [1,2,3,4,5];
    console.log(arr.reverse())//数组反转
    console.log(arr);//改变了原始数组
    // sort() 如果包含undefined,则会把undefined放在最后面
    var arr1 = [1,undefined,2,undefined,3];
    arr1.sort()
    console.log(arr1)//[1,2,3undefined,undefined];
    // 数组里面有字符串和数字比较的时候,返回NaN,也就是false.所以会出现在数字前面
    var arr2 = ['wbin',3,50,3];
    arr2.sort(function(x,y){
        if(x<y){
            return -1
        }else if(x>y){
            return 1
        }else{
            return 0
        }
    })
    console.log(arr2)

    可以利用sort()来随机排序一个数组

    function compare(){
        return Math.random() - 0.5;
    }
    var h = [1,2,3,4,5];
    console.log(h.sort(compare));

    5.concat()

    // concat()方法基于当前数组中的所有项创建一个新数组,先创建当前数组一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组。所以,不影响原数组
    
            // 如果不提供参数,concat()方法返回当前数组的一个浅拷贝。也就是说如果数组成员包括复合类型(比如对象),则新数组拷贝的是该值得引用。
            var i = [1,2];
            var ii = i.concat();
            console.log(i,ii);
            i[0] = 0;
            console.log(i,ii)
            var j = [[1,2]];
            var jj = j.concat();
            console.log(j,jj);
            j[0][0] = "wbin";
            console.log(j,jj)
    
            var aa = {
                a:11
            }
            var bb = {
                b:22
            }
            var r = Array.prototype.concat.call(aa,bb)
            console.log(r)

    6.reduce()

    var arr1 = [1,32,3,4,5];
            // 求和
            var sum = arr1.reduce(function(x,y){
                  return x+y
            })
            console.log(sum)//45
            // 带有原始数据的求和
            var sum1 = arr1.reduce(function(x,y){
                return x+y
            },-5)
            console.log(sum1)//40
            // 找出长度最长的数组元素
            var arr2 = ['aaa',1,222,3,'wbin'];
            var findLongest = arr2.reduce(function(pre,cur){
                return pre.length > cur.length ? pre :cur
            })
            console.log(findLongest)//wbin
            // 实现二维数组扁平化
            var matrix = [
                [1,2],
                [3,4],
                [5,6]
            ]
            var flatten = matrix.reduce(function(pre,cur){
                return pre.concat(cur)
            })  
            console.log(flatten)//[1,2,3,4,5,6]

    7. 数组迭代方法,两个参数,一个是要在每一项上运行的函数和运行该函数的作用域对象

    var arr2 = [1,2,3];
            var r2 = arr2.map(function(item,index,arr){
                return item*item
            })
            console.log(r2)//[1,4,9]
            var arr3 = ['a','b','c'];
            var r3 = [1,2].map(function(item,index,arr){
                return this[item]//只能写成这样的格式
            },arr3)
            console.log(r3)//['b','b']
            // 利用map方法获得对象数组中的特性属性值
            let arr4 = [
                {
                    name:'qi_tian_da_sheng',
                    email:'666@qq.com'
                },
                {
                    name:'tian_peng_yuan_shuai',
                    email:'888@qq.com'
                },
                {
                    name:'wbin',
                    email:'8888888@qq.com'
                }
            ]
            var r4 = arr4.map(function(item,index){
                return item.email
            })
            console.log(r4)//['666@qq.com','888@qq.com','8888888@qq.com']
            // 对字符串使用该方法,返回的是一个分开的数组
            var str = "abc";
            var r5 = Array.prototype.map.call(str,function(item,index){
                return item//这里可以写一些方法
            })

    8.filter()

    1        // filter()会跳过稀疏数组中缺少的元素,它的返回值总是稠密的
    2         var arr6 = [1,,2,,,3,,,,,,4];
    3         var r6 = arr6.filter(function(){
    4             return true
    5         })
    6         console.log(r6)//[1,2,3,4]

    9.some() 和 every()

            // some() 方法对数组中的每一项运行给定函数,如果该函数对任一项返回true,则返回true
            var arr7 = [1,2,3];
            var r7 = arr7.some(function(ele){
                return ele%2 ===0
            })
            console.log(r7)//true
            // 空数组上调用some返回的是false
            console.log([].some(function(){}))//false
            // every()和some相反
     
     
    改变原数组的方法有七种
    四种栈和队列方法 unshift() shift() pop() push()
    两个排序方法 reverse() sort()
    一个删除方法 splice()

    还遗漏一些其他的方法,以后补充。

  • 相关阅读:
    解决ValueError: Some of types cannot be determined by the first 100 rows,
    关于number_format的一个报错
    关于IPV6审核被拒问题处理
    项目集成三方库由静态库转为动态库遇到的问题总结
    Swift判断对象属于什么类型
    运行项目报错 报scandir() has been disabled for security reasons
    CocoPods port 443
    Jetpack学习-WorkManager
    Jetpack学习-Paging
    Jetpack学习-Navigation
  • 原文地址:https://www.cnblogs.com/chinabin1993/p/8045152.html
Copyright © 2020-2023  润新知