Vue-关于数组相关操作及JS高阶函数的使用

1.高阶函数英文叫Higher-order function。那么什么是高阶函数?

  • JavaScript的函数其实都指向某个变量。既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

2.至少满足下列一个条件的函数:

  • .接收一个或多个函数作为输入参数
  • 输出一个函数

3.总结: 高阶函数的功能很大程度上可以用普通的函数实现,但是高阶函数使代码更加抽象容易理解,使功能代码更加简洁,提高了代码的可读性和执行效率, 在函数复杂时可以很便捷地实现需要的功能。


    <div id="app">
        <button @click="forofDemo">高阶函数Forof</button>
        <button @click="filterDemo">高阶函数Filter(筛选组成新数组)</button>
        <button @click="MapDemo">高阶函数Map(对每一项进行操作返回操作后的数组数据)</button>
        <button @click="reduceDemo">高阶函数Reduce(数组汇总函数)</button>
        <button @click="numBookPrice">图书价格总和</button>
        <button @click="forObj">循环对象</button>
    </div>
    <script src="VueDemo/VueDemo/VueJs/vue.js"></script>
    <script>
        let vm = new Vue({
            el: "#app",
            data: {
                bookArrList: [{
                    id: 1,
                    name: "三国演义",
                    date: "2016-02-15",
                    price: 55.00,
                    count: 1
                }, {
                    id: 2,
                    name: "水浒传",
                    date: "2013-02-15",
                    price: 35.50,
                    count: 1
                }, {
                    id: 3,
                    name: "西游记",
                    date: "2015-02-15",
                    price: 78.00,
                    count: 1
                }, {
                    id: 4,
                    name: "红楼梦",
                    date: "2017-02-15",
                    price: 85.00,
                    count: 1
                }],
                arrNum: [120, 100, 110, 200, 200],
                objP: [{
                    name: "zs",
                    age: 14,
                    sex: "男"
                }, {
                    name: "ls",
                    age: 15,
                    sex: "男"
                }]
            },
            methods: {
                forObj() {
                    for (const item of this.objP) {
                        console.log(item.name + item.age + item.sex)//zs14男 \r ls15男
                    }
                },
                forofDemo() {
                    var i = 0
                    //for of循环 iterator指的是当前对象(项) 不是索引
                    for (const iterator of this.arrNum) {
                        i += iterator
                    }
                    console.log(i)
                },
                filterDemo() {
                    let newArr = this.arrNum.filter(function (item) {
                        return item > 100
                    })
                    console.log(newArr)

                    //品牌列表摘录
                    var newlist02 = this.NewsList.filter(item => {
                        if (item.name.includes(kw)) { //string.includes(str)  判断字符串中是否包含某个字符串,如果包含返回为true
                            return item; //如果包含返回当前项
                        }
                    });
                    return newlist02;
                },
                MapDemo() {
                    let arr = this.arrNum.map(function (item) {
                        return item + 2
                    })
                    console.log(arr)
                },
                reduceDemo() {
                    let num = this.arrNum.reduce(function (preValue, val) {
                        //preValue 上一次返回的值   val 循环的当前值  第二参数‘0’为preValue初始值
                        return preValue + val
                        //0--100
                        //100-200
                        //-- --   总和 
                    }, 0)
                    console.log(num)
                },
                //图书实例
                numBookPrice() {
                    var bookNum = this.bookArrList.reduce(function (preValue, val) {
                        //val指的是循环的当前项  --- book对象
                        return preValue + (val.price * val.count)
                    }, 0)
                    console.log(bookNum)
                },
                //另外几个函数补充
                deleteDemo() {
                    //通过数组的新方法findIndex方法
                    var index = this.NewsList.findIndex(item => {
                        if (item.id == id) {
                            return true; //如果该项符合条件,return true返回该项索引并终止循环
                        }
                    })
                    this.NewsList.splice(index, 1);

                    //----02
                    //2.使用数组的some方法,遍历该数组,一旦符合某个条件终止循环,返回true终止循环
                    this.NewsList.some((item, i) => {
                        if (item.id == id) {
                            //找到了调用数组的splice方法删除该组数据,并返回true
                            this.NewsList.splice(i, 1);
                            return true;//return true终止循环
                        }
                    })
                },
                //补充--------------------------------------------------------------------------------
                De() {
                    // this.fruteArry.pop();//删除最后一项
                    // this.fruteArry.push('榴莲'); //追加一个元素
                    // var obj = this.fruteArry.shift(); //删除前面的元素,返回值是删除的元素
                    // var obj = this.fruteArry.unshift("Apple"); //在前面添加,返回新的数组长度
                    // var obj = this.numArry.sort(); //默认排序,按最左边的数字进行排序
                    var arr2 = this.numArry.sort((a, b) => {
                        return a - b; //升序(没有><)
                    });
                    // var obj = this.fruteArry.reverse();//反转

                    //更新对象,没有对象的变异方法,要使用Vue的$set函数来更新
                    // objVue.$set(this.objZs, "sayHi", "Hellow World"); //1.更新对象2.更新目标属性3.更新值
                    //已有属性执行更新操作,没有的属性执行添加操作
                    //删除对象属性
                    // Vue.delete(this.objZs, "name"); //使用Vue函数
                    // objVue.$delete(this.objZs, "name"); //使用Vue对象(实例)加$
                }
            },

        })
    </script>
发布了83 篇原创文章 · 获赞 11 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/MrLsss/article/details/104488920