lodash 常用总结

lodash 常用总结merge 合并源对象的属性到目标对象中 merge object sources merge 遇到相同属性的时候 如果属性值为纯对象 plainobject 或者集合 collection 时 不是用后面的属性值去覆盖前面的属性值 而是会把前后两个属性值合并 如果源对象的属性值为 undefined 则会忽略该属性 merge a 1 b

_.merge 合并源对象的属性到目标对象中

merge(object, [sources])

 merge 遇到相同属性的时候,如果属性值为纯对象(plain object)或者集合(collection)时,不是用后面的属性值去覆盖前面的属性值,而是会把前后两个属性值合并。
如果源对象的属性值为 undefined,则会忽略该属性。

merge({},{ a: 1 },{ b: { c: 2, d: 3} },{ b: { e: 4 } })

//结果

{ a: 1, b: { c: 2, d: 3, e: 4 } }

————————————————

/ 合并集合

var users = {

‘data’: [{ ‘user’: ‘barney’ }, { ‘user’: ‘fred’ }]

};

var ages = {

‘data’: [{ ‘age’: 36 }, { ‘age’: 40 }]

};

merge({}, users, ages)

// { data: [ { user: ‘barney’, age: 36 }, { user: ‘fred’, age: 40 } ] }

// merge 函数会修改原来的对象!

merge(users, ages)

console.log(users) // { data: [ { user: ‘barney’, age: 36 }, { user: ‘fred’, age: 40 } ]

 

assign 、extend、merge 

相同之处

  • 都可以用来合并对象
  • 都会修改原来的对象 (如果原来的对象是作为函数的第一个参数的话)

不同之处

  • assign 函数不会处理原型链上的属性,也不会合并相同的属性,而是用后面的属性值覆盖前面的属性值
  • extend
    • 3.x 版本中和 assign 一样
    • 4.x 版本中会合并原型链上的属性
  • merge 遇到相同属性名的时候,如果属性值是纯对象或集合的时候,会合并属性值

 

_.uniqueId

生成唯一的Id,参数[ prefix=” ]是可选的,可在ID前面添加前缀。

_.uniqueId(‘count_’)

//’count_104′

_.uniqueId()// =>’105′

 

_.uniqBy 从数组中删除重复项
[ { url: 'www.example.com/hello', id: "22" }, { url: 'www.example.com/hello', id: "22" }, { url: 'www.example.com/hello-how-are-you', id: "23" }, { url: 'www.example.com/i-like-cats', id: "24" }, { url: 'www.example.com/i-like-pie', id: "25" } ]
_.uniqBy(data, 'id');

假设数据应该是唯一的,id并且数据存储在data变量中,那么可以使用uniq()函数,如下所示:

_.uniq(data, function (e) { return e.id; }); 

或者直接这样:

_.uniq(data, 'id');
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/232905.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号