ES6的方法&类数组转成真正的数组&判断数组的方法

forEach--循环数组:

   forEach循环的回调函数中, 不可以return一个值,但是可以终止方法的执行

   forEach循环,循环结束没有返回值,返回值是undifind,可以改变原来的数组

<script>
        let arr = [{
            name: "张三",
            age: 20
        },
        {
            name: "李四",
            age: 50
        },
        {
            name: "王五",
            age: 10
        }]
        // forEach循环的回调函数中, 不可以return一个值,但是可以终止方法的执行
        // forEach循环,循环结束没有返回值,返回值是undifind.可以改变原来的数组
        arr.forEach(function (item, index) {
            console.log(item.name + "--" + index);
        })
    </script>

map --循环数组:l例如只会返回[20,50,10]

   <script>
        let arr = [{
            name: "张三",
            age: 20
        },
        {
            name: "李四",
            age: 50
        },
        {
            name: "王五",
            age: 10
        }]

 // map根据回调函数返回一个新数组
        let narr = arr.map(function (item, index) {
            return item.name //返回:张三 李四 王五
        })
        console.log(narr);

        // 下面等于上面的map遍历
        let arr2 = []
        arr.forEach(function (item) {
            arr2.push(item.name)
        })
        console.log(arr2);
    </script>

filter  --过滤筛选:

作用:通过return中的判断条件,返回一个判断为true的组成一个新数组返回出去

 <script>
        let arr = [{
            name: "张三",
            age: 30
        },
        {
            name: "李四",
            age: 40
        },
        {
            name: "王五",
            age: 50
        }]
        // 筛选1
        let arr2 = arr.filter(function (item, index) {
            return item.age > 30
        })
        // 筛选2
        let arr3 = []
        arr.forEach(function (item, index) {
            if (item.age > 30) {
                arr3.push(item)
            }
        })
        console.log(arr3);
    </script>

find  --查找返回的是新的对象

作用:循环数组,通过return判断,返回一个新的对象

    <script>
        let arr = [{
            name: "张三",
            age: 30
        },
        {
            name: "李四",
            age: 40
        },
        {
            name: "王五",
            age: 50
        }]
        // find查找返回对象
        let arr3 = arr.find(function (v, i) {
            return v.name == "张三"
        })
        // 第二种返回对象的方法
        function findFn() {
            var obj = {};
            arr.forEach(function (item) {
                if (item.name == "张三") {
                    //   浅拷贝
                    obj = item
                }
            })
            return obj;
        }
        let obj2 = findFn()
        console.log(obj2);
    </script>

every  --循环:

作用:循环数组,通过return来判断条件,如果数组的每一项条件都满足,则返回true,否则false

    <script>
        let arr = [{
            name: "张三",
            age: 30
        },
        {
            name: "李四",
            age: 40
        },
        {
            name: "王五",
            age: 50
        }]
        let flag = arr.every(function (item, index) {
            return item.age > 20
        })
        console.log(flag);
    </script>

其他循环判断方法:

  let arr = [{
            name: "张三",
            age: 30
        },
        {
            name: "李四",
            age: 40
        },
        {
            name: "王五",
            age: 50
        }]

        Array.prototype.everyFn = function () {
            for (var i in this) {
                if (this[i].age <= 30) {
                    return false
                }
            }
            return true
        }
        var flag = arr.everyFn()
        console.log(flag);

some --循环:

作用:循环数组,通过return来判断条件,如果数组有一些满足,则返回true,否则false

    let arr1 = [{
            name: "张三",
            age: 30
        },
        {
            name: "李四",
            age: 40
        },
        {
            name: "王五",
            age: 50
        }]
        // some 返回的是布尔值
        let aa = arr1.some(function (item, index) {
            return item.age > 40
        })
        console.log(aa);

reduce--高阶函数:

作用:实现数组的累加、乘、求和等

(for in 循环会把其他的自带属性全部打印出来)

  let arr = [2, 3, 4, 5, 6];
        let s = arr.reduce(function (sum, num) {
            console.log(sum, num);
            // sum:每次循环累加后的值
            // num:表示数组中sum后面的值
            return sum + num
        })
        console.log(s);
        var sum = 0
        for (var i in arr) {
            sum += arr[i]
        }
        console.log(sum);

findindex --循环数组,返回数组中最近的索引,不会改变原数组(不太经常用到),一个也不满足返回-1

  let arr = [{
            name: "张三",
            age: 30
        },
        {
            name: "李四",
            age: 40
        },
        {
            name: "王五",
            age: 50
        }]
        // 第一种寻找下标
        let s = arr.findIndex(function (item, index) {
            return item.age > 40
        })
        console.log(s);
        // 第二种寻找下标
        Array.prototype.findIndex = function () {
            for (var i = 0; i < arr.length; i++) {
                if (this[i].age > 40) {
                    return i
                }
            }
            return -1
        }

toString-- 转化为字符串:

作用:数字、数组、字符串都有toString方法

 var num = [1, 2, 3]
        var n = num.toString()  //(数组是去除左右的中括号,再转成字符串)
        console.log(n);

        var num2 = 2
        var n2 = num2.toString()
        console.log(n2);

类数组转成真正的数组

有哪些类数组$转为数组的方法:

arguments

 <script>
        function fn() {
            // 类数组用不了数组的方法,所以要转成真正的数组
            console.log(arguments);//1,2,3,4
            // 1、⭐es6之前转数组的方法
            let arr = Array.prototype.slice.call(arguments)
            console.log(arr);

            // 2、 ES6 类数组转数组方法
            let arr2 = Array.from(arguments)
            console.log(arr2);


            // 3、利用拓展运算符实现转数组
            let arr3 = [...arguments]
            console.log(arr3);

            // 如何判断一个数组是真正的数组
            // Array.isArray()方法返回一个true表示是真正的数组,反之不是
            console.log(Array.isArray(arr2));
        }
        fn(1, 2, 3, 4)

    </script>

如何判断一个数组是真正的数组:

  <script>
        function fn() {
            // 3、利用拓展运算符实现转数组
            let arr3 = [...arguments]
            console.log(arr3);

            // 如何判断一个数组是真正的数组
            // ES6之前判断方法instanceof:
            console.log(arr3 instanceof Array);
            // ES6之前判断方法instanceof:
            console.log(Object.prototype.toString.call(arr3));
            // ES6中的另一个方法:返回一个true表示是真正的数组,反之不是
            console.log(Array.isArray(arr2));
        }
        fn(1, 2, 3, 4)

    </script>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值