• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
技术杨的博客园
希望每一次的努力都能得到自己想要的
博客园    首页    新随笔    联系   管理    订阅  订阅

lodash高性能的 JavaScript 实用工具库

_.cloneDeep(value)

这个方法类似_.cloneDeep,除了它会递归拷贝 value。(注:也叫深拷贝)。

例子:

var objects = [{ 'a': 1 }, { 'b': 2 }];

var deep = _.cloneDeep(objects);

console.log(deep[0] === objects[0]);

// => false

_.clone(value)   

创建一个 value 的浅拷贝。

例子:

var objects = [{ 'a': 1 }, { 'b': 2 }];
var shallow = _.clone(objects);
console.log(shallow[0] === objects[0]);
// => true

1、什么是浅拷贝

创建一个新对象,这个对象有着原始对象属性值的一份精确拷贝。如果属性是基本类型,拷贝的就是基本类型的值,如果属性是引用类型,拷贝的就是内存地址 ,所以如果其中一个对象改变了这个地址,就会影响到另一个对象。

2、什么是深拷贝

深拷贝会拷贝所有的属性,并拷贝属性指向的动态分配的内存。当对象和它所引用的对象一起拷贝时即发生深拷贝。深拷贝相比于浅拷贝速度较慢并且花销较大。拷贝前后两个对象互不影响。

_.chunk(value)   

chunk是Lodash库中的一个函数,它用于将一个数组按指定大小分割成多个数组块。该函数接受两个参数:要分割的数组和每个数组块的大小。

chunk函数的功能是将一个数组分割成多个块,每个块包含了指定数量的元素(除了最后一个块可能会少于指定数量)。这在处理数组数据时非常有用,特别是在需要将大数组分割成更小的块来进行处理或展示时。

以下是一个示例:

const array = [1, 2, 3, 4, 5, 6, 7, 8];
const chunkedArray = _.chunk(array, 3);

console.log(chunkedArray);
// Output: [[1, 2, 3], [4, 5, 6], [7, 8]]

在上面的示例中,原始数组 [1, 2, 3, 4, 5, 6, 7, 8] 被分割成了三个数组块,每个块包含三个元素,最后一个块只有两个元素。

使用 chunk 函数可以方便地处理大型数据集,以及在UI展示中分页、分列等需求。

_.pick(value)   

pick 是 Lodash 库中的一个函数,用于选取一个对象中的指定属性,返回一个新的对象并只包含选中的属性。

pick 函数接受两个参数,第一个参数是要选取属性的对象,第二个参数是一个可选的字符串或字符串数组,表示要选取的属性名。如果传入的第二个参数是一个字符串,则会返回一个新的对象,该对象只包含第一个参数对象中指定的属性名对应的键值对。如果传入的第二个参数是一个字符串数组,则返回的对象包含数组中指定的属性名对应的键值对。

以下是一个例子:

const user = {
  name: 'John Doe',
  age: 27,
  email: 'johndoe@example.com',
  job: 'Software Engineer'
};

const newUser = _.pick(user, ['name', 'email']);
console.log(newUser);
// Output: { name: 'John Doe', email: 'johndoe@example.com'}

在上述示例中,我们使用 _.pick 函数选取了 user 对象的 name 和 email 属性,并将它们放在一个新对象中返回。最终,输出的结果是 { name: 'John Doe', email: 'johndoe@example.com' }。

pick 函数非常方便,可以用于从一个对象中选取需要的属性,避免了在代码中重复写许多判断语句。

 

posted @ 2023-02-21 16:39  技术杨  阅读(241)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3