美文网首页
lodash 常用

lodash 常用

作者: wyc0859 | 来源:发表于2021-01-25 18:31 被阅读0次

    uniapp使用lodash

    安装lodash: npm i lodash -S

    //main.js中引入
    import lodash from 'lodash';
    Vue.prototype._ = lodash
    
    <template>
        <view class="content">
            lodash  
        </view>
    </template>
    
    <script>      
        export default {  
            onShow(){            
                this.ls_compact()
                this.ls_concat()
                this.ls_head()
                this.ls_arr_obj()
                this.ls_pull()
                this.ls_tail()
                this.ls_arr()       
                this.ls_coll()
                this.ls_memoize()
            }, 
            methods: { 
                //过滤假值2种方式
                ls_compact(){
                    let arr=[0, 1, false, 2, '', 3];
                    let res=_.compact(arr); 
                    //let res=[0, 1, false, 2, '', 3].filter(_ => _)
                    console.log("过滤假值:",res)    // [1, 2, 3]
                },
                //数组拼接
                ls_concat(){ 
                    let res=_.concat([1], [2, 3, 4], [5, 6]);   
                    console.log("数组拼接:",res) //[1, 2, 3, 4, 5, 6]
                },
                //获取第一个元素的2种方式
                ls_head(){ 
                    const res = _.head([1, 2, 3])
                    const [res1,res2] = [1, 2, 3] 
                    console.log("获取第一个元素:",res,res1,res2) //1 1 2
                },
                //entries类型数组转换为对象
                ls_arr_obj(){
                    let res=_.fromPairs([['fred', 30], ['barney', 40]])
                    console.log("数组转换为对象:",res)//{fred: 30, barney: 40}
                },  
                //移除指定元素
                ls_pull(){
                    let res=_.pull([1, 2, 4, 1, 2, 3,5], 2, 3, 5)//参数1,参数...都是移除 
                    console.log("移除指定元素:",res)//[1, 4, 1]
                }, 
                //不包含第一个元素的数组的2种方式
                ls_tail(){
                    const res=_.tail([1, 2, 3])
                    var [first,...res1] = [1, 2, 3] // 可扩展不包含前第n个元素
                    console.log("返回不包含第一个元素的数组:",res,res1,first)
                    // [2, 3]   [2, 3]  1
                },  
                //数组操作
                ls_arr(){               
                    console.log("从数组1中去掉数组2存在的元素:",_.difference([1,2,3,4,5,6], [2,4,7]))    
                    
                    let arr = [1, 2, 3, 4, 5]
                    //鸡肋方法
                    let res = _.take(arr, 1,3) // 创建一个数组切片,从下标0到n-1
                    const arr2 = [1, 2, 3, 4, 5]
                    arr2.length = 2 // 修改长度,直接删除后面元素,可用于清空数组
                    console.log("删除数组元素后:",res,arr2) //[1]  [1,2]
                    
                    // 倒数解构
                    const [a,b] = _.takeRight([1, 2, 3, 4,5,6], 2)
                    console.log("倒数解构:",a,b)  // 5 6
                    const res3 = _.zipObject(['a', 'b'], [1, 2]);
                    console.log("k数组与v数组合并为对象:",res3)  // { 'a': 1, 'b': 2 }
                    
                    // 遍历数组有点多余
                    _([1, 2]).forEach((v,k) => {
                        console.log(v,k)
                    })
                }, 
                //集合操作
                ls_coll(){
                    console.log("对象操作") 
                   // 遍历对象就
                   const obj={ a: 1, b: 2 }
                   _(obj).forEach((val, key) => {
                     console.log(val, key)
                   })
                   // 原生js写法   **** 注意数组解构顺序
                   Object.entries(obj).forEach(([key, val]) => {
                     console.log(val, key)
                   }) 
                   
                   const users = [
                      { user: 'barney', age: 40, active: false },
                      { user: 'fred', age: 41, active: false },
                      { user: 'ABC', age: 42, active: false },
                   ]
                    //遍历‘集合’元素返回查询到的‘对象’
                    console.log(_.find(users, { user: 'fred' })) //{user: "fred", age: 41, active: false}
                    //返回一个新的过滤后的数组
                    console.log(_.filter(users, { user: 'fred' })) // [{user: "fred", age: 41, active: false}]
                    // 检查集合中的元素是否存在,一定查询到就停止遍历并返回true
                    console.log(_.some(users, { user: 'fred' }))  //true
                    
                    const ux = [
                       { id: 'a', age: 40, height: 1 },
                       { id: 'b', age: 39, height: 2 },
                       { id: 'c', age: 38, height: 3 },
                       { id: 'd', age: 40, height: 4 },
                       { id: 'e', age: 40, height: 1 }
                    ] 
                    console.log(_.groupBy(ux, 'age'))// 按age分组:{38:obj for ['a'], 39:obj for ['b'], 40:obj for ['c', 'd']}
                    console.log(_.groupBy(ux, ({ age, height }) => age + height)) // 按age和height分组
                    const sort=_.orderBy(ux, ['age', 'height'], ['asc', 'desc']); // 以 `user` 升序排序 再  `age` 以降序排序。          }
                    console.log("排序:",sort)
                },
                //函数相关
                ls_fun(){
                    
                },
                ls_memoize(){
                    var object = { 'a': 1, 'b': 2 };
                    var other = { 'c': 3, 'd': 4 };
                     
                    var values = _.memoize(_.values);
                    console.log(values(object))
                    // => [1, 2]
                     
                    console.log(values(other))
                    // => [3, 4]
                    
                    // 直接修改无效
                    object.a = 3;
                    console.log(values(object))
                    // => [1, 2]
                     
                    // 修改结果缓存 
                    values.cache.set(object, ['a', 'b']);
                    console.log(values(object)) 
                    // =>  ['a', 'b']
                }
            }, 
        }
    </script>
     
    

    相关文章

      网友评论

          本文标题:lodash 常用

          本文链接:https://www.haomeiwen.com/subject/zgyizktx.html