loadsh.js 是一款 JavaScript 实用库,提供了许多常用的函数,可以帮助我们简化开发过程,提高代码质量和效率。本文将详细介绍 loadsh.js 中常用的方法。
该函数可以将数组中的每个元素都执行一次指定的操作,并返回由操作的结果组成的新数组。
// 示例代码
_.map([1, 2, 3], function(n) {
return n * 2;
});
// => [2, 4, 6]
该函数可以过滤数组中的元素,只保留符合条件的元素,并返回一个新的数组。
// 示例代码
_.filter([1, 2, 3, 4, 5, 6], function(n) {
return n % 2 == 0;
});
// => [2, 4, 6]
该函数可以将数组中的元素依次应用于一个函数,并将函数的返回值累加至一个最终的值。
// 示例代码
_.reduce([1, 2], function(sum, n) {
return sum + n;
}, 0);
// => 3
该函数可以遍历数组中的每个元素,并执行指定的操作。
// 示例代码
_.forEach([1, 2], function(value) {
console.log(value);
});
// => Logs `1` then `2`.
该函数可以比较两个对象是否相等。
// 示例代码
_.isEqual({ 'a': 1 }, { 'a': 1 });
// => true
该函数可以深度复制一个对象,包括其子对象。
// 示例代码
var objects = [{ 'a': 1 }, { 'b': 2 }];
var deep = _.cloneDeep(objects);
console.log(deep[0] === objects[0]);
// => false
该函数可以延迟函数的执行,直到过了一定的时间段后才执行。
// 示例代码
_.debounce(function() {
console.log('Hello from debounce');
}, 1000);
该函数可以限制函数的执行频率,确保函数在一定时间内只执行一次。
// 示例代码
_.throttle(function() {
console.log('Hello from throttle');
}, 1000);
该函数可以将数组拆分成指定大小的小数组。
// 示例代码
_.chunk(['a', 'b', 'c', 'd'], 2);
// => [['a', 'b'], ['c', 'd']]
该函数可以去除数组中的假值元素(false
,null
,0
,""
,undefined
和 NaN
)。
// 示例代码
_.compact([0, 1, false, 2, '', 3]);
// => [1, 2, 3]
该函数可以将多个数组连接成一个新数组。
// 示例代码
var array = [1];
var other = _.concat(array, 2, [3], [[4]]);
console.log(other);
// => [1, 2, 3, [4]]
该函数可以返回一个剔除了所有给定数组中的元素后的数组。
// 示例代码
_.difference([2, 1], [2, 3]);
// => [1]
该函数可以用指定的值填充一个数组。
// 示例代码
var array = [1, 2, 3];
_.fill(array, 'a');
console.log(array);
// => ['a', 'a', 'a']
该函数可以将一个多维数组展开成一个一维数组。
// 示例代码
_.flatten([1, [2, [3, [4]], 5]]);
// => [1, 2, [3, [4]], 5]
该函数可以返回数组的第一个元素。
// 示例代码
_.head([1, 2, 3]);
// => 1
该函数可以返回数组中除了第一个元素之外的所有元素。
// 示例代码
_.tail([1, 2, 3]);
// => [2, 3]
该函数可以返回数组中指定元素的第一个索引值,如果数组中不存在该元素,则返回 -1
。
// 示例代码
_.indexOf([1, 2, 1, 2], 2);
// => 1
该函数可以返回数组中指定元素的最后一个索引值,如果数组中不存在该元素,则返回 -1
。
// 示例代码
_.lastIndexOf([1, 2, 1, 2], 2);
// => 3
该函数可以返回一个反转后的数组。
// 示例代码
_.reverse([1, 2, 3]);
// => [3, 2, 1]
该函数可以返回一个去重后的数组。
// 示例代码
_.uniq([2, 1, 2]);
// => [2, 1]
该函数可以将多个数组的相同位置的元素组合成新的数组。
// 示例代码
_.zip(['a', 'b'], [1, 2], [true, false]);
// => [['a', 1, true], ['b', 2, false]]
该函数可以生成一个数字序列。
// 示例代码
_.range(4);
// => [0, 1, 2, 3]
_.range(1, 5);
// => [1, 2, 3, 4]
_.range(0, 20, 5);
// => [0, 5, 10, 15]
_.range(0, -4, -1);
// => [0, -1, -2, -3]
_.range(1, 4, 0);
// => [1, 1, 1]
_.range(0);
// => []
该函数可以根据指定的条件对数组进行排序。
// 示例代码
var users = [
{ 'user': 'fred', 'age': 48 },
{ 'user': 'barney', 'age': 36 },
{ 'user': 'fred', 'age': 40 },
{ 'user': 'barney', 'age': 34 }
];
_.orderBy(users, ['user', 'age'], ['desc', 'asc']);
// => [{ 'user': 'fred', 'age': 48 }, { 'user': 'fred', 'age': 40 },
// { 'user': 'barney', 'age': 36 }, { 'user': 'barney', 'age': 34 }]
该函数可以随机打乱数组中的元素。
// 示例代码
_.shuffle([1, 2, 3, 4, 5, 6]);
// => [4, 1, 6, 3, 5, 2]
该函数可以从数组中随机抽取一个元素。
// 示例代码
_.sample([1, 2, 3, 4, 5]);
// => 3
该函数可以判断一个值是否为空。
// 示例代码
_.isEmpty(null);
// => true
_.isEmpty('');
// => true
_.isEmpty({});
// => true
_.isEmpty([]);
// => true
_.isEmpty({ 'a': 1 });
// => false
_.isEmpty([1, 2, 3]);
// => false
该函数可以判断一个值是否为 null
或 undefined
。
// 示例代码
_.isNil(null);
// => true
_.isNil(undefined);
// => true
_.isNil(void 0);
// => true
_.isNil(NaN);
// => false
该函数可以从对象中选取指定的属性。
// 示例代码
var object = { 'a': 1, 'b': '2', 'c': 3 };
_.pick(object, ['a', 'c']);
// => { 'a': 1, 'c': 3 }
该函数可以从对象中剔除指定的属性。
// 示例代码
var object = { 'a': 1, 'b': '2', 'c': 3 };
_.omit(object, ['a', 'c']);
// => { 'b': '2' }
该函数可以将对象的键和值对调。
// 示例代码
var object = { 'a': 1, 'b': 2, 'c': 1 };
_.invert(object);
// => { '1': 'c', '2': 'b' }
该函数可以将数组中的元素按照指定的条件进行分组,并返回一个对象。
// 示例代码
var array = [
{ 'name': 'apple', 'color': 'red' },
{ 'name': 'banana', 'color': 'yellow' },
{ 'name': 'grape', 'color': 'red' }
];
_.groupBy(array, 'color');
// => { 'red': [{ 'name': 'apple', 'color': 'red' }, { 'name': 'grape', 'color': 'red' }], 'yellow': [{ 'name': 'banana', 'color': 'yellow' }] }
该函数可以将数组中的元素按照指定的键进行分组,并返回一个对象。
// 示例代码
var array = [
{ 'id': '1', 'name': 'apple' },
{ 'id': '2', 'name': 'banana' },
{ 'id': '3', 'name': 'grape' }
];
_.keyBy(array, 'id');
// => { '1': { 'id': '1', 'name': 'apple' }, '2': { 'id': '2', 'name': 'banana' }, '3': { 'id': '3', 'name': 'grape' } }
该函数可以将数组中的元素按照指定的条件进行分组,并返回一个对象,对象的值为该分组中元素的数量。
// 示例代码
var array = [
{ 'name': 'apple', 'color': 'red' },
{ 'name': 'banana', 'color': 'yellow' },
{ 'name': 'grape', 'color': 'red' }
];
_.countBy(array, 'color');
// => { 'red': 2, 'yellow': 1 }
该函数可以将数组中的元素分为两个数组,分别是符合条件和不符合条件的元素。
// 示例代码
var array = [1, 2, 3, 4, 5, 6];
_.partition(array, function(n) {
return n % 2 == 0;
});
// => [[2, 4, 6], [1, 3, 5]]
该函数可以遍历对象的可枚举属性,并执行指定的操作。
// 示例代码
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' (无法保证属性的顺序)
该函数可以遍历对象的自有属性,并执行指定的操作。
// 示例代码
function Foo() {
this.a = 1;
this.b = 2;
}
Foo.prototype.c = 3;
_.forOwn(new Foo, function(value, key) {
console.log(key);
});
// => Logs 'a' then 'b' (无法保证属性的顺序)
该函数可以在数组中查找符合条件的元素,并返回该元素。
// 示例代码
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; });
// => { 'user': 'barney', 'age': 36, 'active': true }
该函数可以在数组中查找最后一个符合条件的元素,并返回该元素。
// 示例代码
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
_.findLast(users, function(o) { return o.age < 40; });
// => { 'user': 'pebbles', 'age': 1, 'active': true }
该函数可以在数组中查找符合条件的元素,并返回该元素的索引值。
// 示例代码
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
_.findIndex(users, function(o) { return o.age < 40; });
// => 0
该函数可以在数组中查找最后一个符合条件的元素,并返回该元素的索引值。
// 示例代码
var users = [
{ 'user': 'barney', 'age': 36, 'active': true },
{ 'user': 'fred', 'age': 40, 'active': false },
{ 'user': 'pebbles', 'age': 1, 'active': true }
];
_.findLastIndex(users, function(o) { return o.age < 40; });
// => 2
该函数可以将一个多维数组展开成一个一维数组。
// 示例代码
_.flattenDeep([1, [2, [3, [4]], 5]]);
// => [1, 2, 3, 4, 5]
该函数可以将一个多维数组展开成一个一维数组,但是可以指定展开的深度。
// 示例代码
_.flattenDepth([1, [2, [3, [4]], 5]], 1);
// => [1, 2, [3, [4]], 5]
该函数可以将一个二维数组转换为一个对象。
// 示例代码
_.fromPairs([['a', 1], ['b', 2]]);
// => { 'a': 1, 'b': 2 }
该函数可以返回数组中除了最后一个元素之外的所有元素。
// 示例代码
_.initial([1, 2, 3]);
// => [1, 2]
该函数可以返回多个数组中公共的元素。
// 示例代码
_.intersection([2, 1], [2, 3]);
// => [2]
该函数可以将数组中的元素用指定的分隔符连接成一个字符串。
// 示例代码
_.join(['a', 'b', 'c'], '~');
// => 'a~b~c'
该函数可以返回数组中指定位置的元素。
// 示例代码
var array = ['a', 'b', 'c', 'd'];
_.nth(array, 1);
// => 'b'
_.nth(array, -2);
// => 'c'
该函数可以从数组中移除指定的元素。
// 示例代码
var array = ['a', 'b', 'c', 'a', 'b', 'c'];
_.pull(array, 'a', 'c');
console.log(array);
// => ['b', 'b']
该函数可以从数组中移除指定的多个元素。
// 示例代码
var array = ['a', 'b', 'c', 'a', 'b', 'c'];
_.pullAll(array, ['a', 'c']);
console.log(array);
// => ['b', 'b']
该函数可以从数组中移除指定位置的元素,并返回移除的元素组成的新数组。
// 示例代码
var array = ['a', 'b', 'c', 'd'];
var pulled = _.pullAt(array, [1, 3]);
console.log(array);
// => ['a', 'c']
console.log(pulled);
// => ['b', 'd']
该函数可以将一个对象转换为一个键值对数组。
// 示例代码
_.toPairs({ 'a': 1, 'b': 2 });
// => [['a', 1], ['b', 2]]