lodash VS underscore


一、对比

名称

简介

文档

github

最后提交

star

lodash

JavaScript 实用工具库

​doc​

​github​

lodash和underscore:js实用工具库_.net

lodash和underscore:js实用工具库_.net_02

underscore

一个JavaScript实用库

​doc​

​github​

lodash和underscore:js实用工具库_.net_03

lodash和underscore:js实用工具库_github_04

二、lodash

安装

npm i --save lodash

使用示例

var _ = require("lodash");

// 拆分数组
_.chunk(["a", "b", "c", "d"], 2);
// [ [ 'a', 'b' ], [ 'c', 'd' ] ]

// 过滤掉假值
console.log(_.compact([0, 1, false, 2, "", 3]));
// => [1, 2, 3]

// 打乱集合
console.log(_.shuffle([1, 2, 3]));
// [ 2, 3, 1 ]

// 查找数据
var users = [
{ id: 1, user: "barney" },
{ id: 2, user: "fred" },
{ id: 3, user: "pebbles" }
];

console.log(
_.find(users, function(user) {
return user.id == 1;
})
);
// { id: 1, user: 'barney' }


// 浅拷贝
var objects = [{ a: 1 }, { b: 2 }];

var shallow = _.clone(objects);
console.log(shallow[0] === objects[0]);
// => true

// 深拷贝
var objects = [{ a: 1 }, { b: 2 }];

var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);
// => false

三、underscore

<script src="https://cdn.bootcdn.net/ajax/libs/underscore.js/1.13.0-0/underscore-umd.min.js"></script>

<button onclick="echo_debounce()">echo_debounce</button>

<button onclick="echo_throttle()">echo_throttle</button>

<script>
// doc: https://underscorejs.net/#debounce
// https://www.lodashjs.com/docs/lodash.debounce
// 防抖:每次点击都会重新开始计时
// _.debounce(function, wait, [immediate])
function echo(){
console.log('click');
}

const echo_debounce = _.debounce(echo, 3000)

// 节流:点击后会锁定时间一段时间
// _.throttle(function, wait, [options])
const echo_throttle = _.throttle(echo, 3000)

</script>


参考
​JS魔法堂:函数节流(throttle)与函数去抖(debounce)​