import _ from 'lodash'
agent.forEach(function (n,key) { agent[key].agent_id = agent[key].agent_name; }) return agent;
_.forEach(agent,function(n,key) { agent[key].agent_id= agent[key].agent_name })
var users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 36 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 34 } ]; _.sortBy(users, function(o) { return o.user; }); // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]] _.sortBy(users, ['user', 'age']); // => objects for [['barney', 34], ['barney', 36], ['fred', 40], ['fred', 48]] _.sortBy(users, 'user', function(o) { return Math.floor(o.age / 10); }); // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
var users = [ { 'user': 'fred', 'age': 48 }, { 'user': 'barney', 'age': 34 }, { 'user': 'fred', 'age': 40 }, { 'user': 'barney', 'age': 36 } ]; // 以 `user` 降序排序 再 `age` 以降序排序。 _.orderBy(users, ['user', 'age'], ['desc', 'desc']); // => objects for [['fred', 48], ['fred', 40], ['barney', 36], ['barney', 34]]
const arr = [1,2,3,4,5,6,7,8,9]; _.chunk(arr,2); // =>[[1,2],[3,4],[5,6],[7,8],[9]] 这个函数把数组按照必定的长度分开,返回新的数组。(片断化数组)
_.compact(['1','2',' ',0]) // => ['1','2'] 对应的还有一个数组去重函数,这在实际的开发中颇有做用。
_.uniq([1,1,3]) // => [1,3] 这跟介绍的第二个函数compact有很好的配合做用。(后端接口传来的数据不少是有重复或者空值的,这时候就可使用两个函数来过滤数据。ladash只是最基础的库,其实能够将几个函数封装起来组件本身的库。)
_.filter([1,2],x => x = 1) // => [1] _.reject([1,2],x => x=1) // => [2] 这两个过滤器,第二个参数值是false的时候返回是reject的功能,相反是true的时候是filter。
若是不明白map和forEach有什么类似的能够百度一下,简单说一下不一样点就是,map的回调函数中是支持return返回值的。 不过两者都不改变原来的数组。 _.map([1,2],x => x+1) // => [2,3] 推荐使用map。
官网的解释是,递归的将源对象和继承的可枚举字符串监控属性合并到目标对象中。源对象从左到右引用,后续来源将覆盖之前来源的属性分配。 var object = { 'a': [{ 'b': 2 }, { 'd': 4 }] }; var other = { 'a': [{ 'c': 3 }, { 'e': 5 }] }; _.merge(object, other); // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] } 这里就像借用官网的代码来解释一下了。在实际开发中,前端在接口的请求能够merge一下以前的query和如今改变的查询的值,再去请求后端接口的数据。
function Foo() { this.a = 1; } function Bar() { this.c = 3; } Foo.prototype.b = 2; Bar.prototype.d = 4; _.assignIn({ 'a': 0 }, new Foo, new Bar); // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }
var array = [1]; var other = _.concat(array, 2, [3], [[4]]); console.log(other); // => [1, 2, 3, [4]] console.log(array); // => [1] 能够接受多个参数,将多个参数合并为一个数组元素。
function Foo() { this.a = 1; this.b = 2; } Foo.prototype.c = 3; _.keys(new Foo); // => ['a', 'b'] (iteration order is not guaranteed) _.keys('hi'); // => ['0', '1'] 相似object.keys(),返回对象中可枚举属性的数组。
_.range(10) //生成元素为0到9的数组 _.times(10, (i)=>console.log(i)) //循环10次 _.uniqueId() //生成不一样的id,用于元素中的id值再好不过 _.startWith //判断字符串是否以xx开头 _.endWith //判断字符串是否以xx结尾 _.truncat //截取指定长度后加… 用于处理标题过长再好不过 _.template //es6有字符串模板的语法,而lodash是es5的替代方案 _.assign //合并,es6有Object.assign,相似于jQuery.extend _.assignIn //lodash里不少方法带In的都是可枚举原型链上的属性 _.defaults //安全合并,即忽略undefined/null的重写 _.findKey //根据value的属性值找key .mapKeys //遍历重写key, 至关于.forIn .mapValues //遍历重写value , 至关于.forIn _.invert //反转映射,快速经过value值找key _.omit //返回移除部分属性的副本,好比提交表单时有些字段不要提交 _.pick //与omit相反,提取部分属性的副本,好比只提交某些字段 _. clamp //确认所给值只在min,max之间 _.max //最大 _.min //最小 _.sum //求和 _.random //生成随机数 _.round //四舍五入,容许指定精确位数 _.isNumber _.isInterger _.isFunction _.isPlainObject _.isArray _.isDate _.isElement _.isNil //null or undefined _.isEmpty //{} or 空数组 _.isEqual //支持对象和数组 _.isMatch //匹配对象属性值 _.cloneDeep //深度复制 _.clone //浅复制 _.once //只执行一次 _.before //最多n-1次 _.after //n次后执行 _.debounce //忽略频繁执行 _.union //合并两数组,去重 _.uniq //去重 _.pull(array,element1,element2) // 直接在array中移除元素, _.without(array,element1,element2) //获得新array中移除元素 _.remove(array, function) //直接在array移除在function返回true的元素 _.sameple(array) //随机取1 _.samepleSize(array, int) // 随机取n _.shuffle(array) //乱序, jQuery.shuffle _.find(array, function | object) //根据function返回值和对象查找1个结果 _.filter(array, function | object) //根据function返回值和对象查找多个结果 _.groupBy(array, string) //分组,与多合一相反 _.keyBy(array, string) //分组,相似groupBy, 但只有惟一值 _.countBy(array, string) //分组统计 _.orderBy(array, array, array) _.sortBy(array, array) _.difference(array1,array2) //找不一样于array2,元素是Object用differenceBy _.xor(array1,array2) //获得非交集,元素是Object用xorBy _.intersection(array1,array2) //获得交集,元素是Object用intersectionBy