lodash是一套工具库,它内部封装了诸多对字符串、数组、对象等常见数据类型的处理函数。中文文档在此。
_.times(5, function(){
// ...
});
var objB = _.cloneDeep(objA);
_.random(20); // 返回 0 到 20的随机数
_.random(15, 20, true); // 返回 15 到 20的浮点型随机数;
var objA = {"name": "colin", "car": "suzuki"};
var objB = {"name": "james", "age": 17};
_.assign(objA, objB););
var objA = {"name": "colin", "car": "suzuki", "age": 17};
bjA = _.omit(objA, ['car', 'age']); // {"name": "colin"}
_.forEach(collection, function (value, index, collection){})
_.map(collection, function (value, index, collection){})
_.find(collection, function (value, index, collection){})
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
_.find(users, function(o) { return o.age < 40; });
// => object for 'barney'
_.find(users, { 'age': 1, 'active': true });
// => object for 'pebbles'
_.find(users, 'active');
// => object for 'barney'
_.findIndex(collection, function (value, index, collection){})
_.filter(collection, function (value, index, collection){})
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false }
];
_.filter(users, function(o) { return !o.active; });
// => objects for ['fred']
_.filter(users, ['active', false]);
// => objects for ['fred']
注意:这个方法对于对于空集合返回 true,因为空集合的任何元素都是 true 。
_.every(collection, function (value, index, collection){})
_.every([true, 1, null, 'yes'], Boolean);
// => false
_.some(collection, function (value, index, collection){})
_.some([null, 0, 'yes', false], Boolean);
// => true
_.remove(collection, function (value, index, collection){})
var array = [1, 2, 3, 4];
var evens = _.remove(array, function(n) {
return n % 2 == 0;
});
console.log(array);
// => [1, 3]
console.log(evens);
// => [2, 4]
_.join(['a', 'b', 'c'], '~');
// => 'a~b~c'
_.flatten([1, [2, [3, [4]], 5]]);
// => [1, 2, [3, [4]], 5]
_.flattenDeep([1, [2, [3, [4]], 5]]);
// => [1, 2, 3, 4, 5]
var array = [1, [2, [3, [4]], 5]];
_.flattenDepth(array, 1);
// => [1, 2, [3, [4]], 5]
_.flattenDepth(array, 2);
// => [1, 2, 3, [4], 5]
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]]
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 34 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'barney', 'age': 36 }
];
// 以 `user` 升序排序 再 `age` 以降序排序。
_.orderBy(users, ['user', 'age'], ['asc', 'desc']);
// => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
var array = [1, 2, 3];
_.reverse(array);
console.log(array);
// => [3, 2, 1]
_.uniq([2, 1, 2]);
// => [2, 1]
_.uniqBy(collection, function (value){})
_.uniqBy([2.1, 1.2, 2.3], Math.floor);
// => [2.1, 1.2]
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.forIn(new Foo, function(value, key) {
console.log(key);
});
// => Logs 'a', 'b', then 'c' (无法保证遍历的顺序)。
var users = [
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'pebbles', 'age': 1 }
];
var youngest = _
.chain(users)
.sortBy('age')
.map(function(o) {
return o.user + ' is ' + o.age;
})
.head() //获取数组 array 的第一个元素。
.value();
_.defer(func, [args])
_.defer(function(stamp) {
console.log(_.now() - stamp);
}, _.now());
// => 记录延迟函数调用的毫秒数
_.delay(function(text) {
console.log(text);
}, 1000, 'later');
// => 一秒后输出 'later'。
ES6里面有一些特性可以直接替代将lodash的方法:
var test = array.map(function (value) {
return value.id + 10000
});
_.head([1, 2, 3]);
// 1
_.tail([1, 2, 3]);
// [2, 3]
// 变为
const [head, ...tail] = [1, 2, 3];