Сегодня также очень трудно заработать деньги на корм для кошек.
Если в статье есть ошибки или недостатки, я надеюсь понять и помочь мне указать, большое спасибо
Я случайно увидел, как мои коллеги в проекте компании использовали lodash и посмотрел, он инкапсулирует множество функций обработки для распространенных типов данных, таких как строки, массивы, объекты и т. д. Lodash уменьшает массив, число, объекты, строку и т. д. Это делает JavaScript проще в использовании. Его можно вызывать напрямую, например, дедупликацию массива, функцию защиты от сотрясения и т. д., что может упростить большую часть кода.lodashМетодов много, и в официальных документах есть описания.В статье упоминаются некоторые методы, которыми я обычно пользуюсь больше.
Array:适用于数组类型,比如填充数据、查找元素、数组分片等操作
Collection:适用于数组和对象类型,部分适用于字符串,比如分组、查找、过滤等操作
Function:适用于函数类型,比如节流、延迟、缓存、设置钩子等操作
Lang:普遍适用于各种类型,常用于执行类型判断和类型转换
Math:适用于数值类型,常用于执行数学运算
Number:适用于生成随机数,比较数值与数值区间的关系
Object:适用于对象类型,常用于对象的创建、扩展、类型转换、检索、集合等操作
Seq:常用于创建链式调用,提高执行性能(惰性计算)
String:适用于字符串类型
Сначала установите ладаш глобально через npm
npm i -save lodash \\全局安装
Обычно некоторые методы инкапсулируются в utils toolkit, а затем монтируются глобально.Поскольку глобальная стоимость монтирования довольно велика, этот метод широко используется в некоторых проектах. При необходимости вводятся следующие методы:
import _get from 'lodash/get'
import _map from 'lodash/map'
import _uniq from 'lodash/uniq'
import _pick from 'lodash/pick'
import _omit from 'lodash/omit'
import _isNaN from 'lodash/isNaN'
import _property from 'lodash/property'
import _findIndex from 'lodash/findIndex'
import _isUndefined from 'lodash/isUndefined'
import _isString from 'lodash/isString'
import _debounce from 'lodash/debounce'
_get
грамматика:
_.get(object, path, [defaultValue])
Метод get @description используется для решения проблемы неопределенности в a.b.c.d, в результате чего код сообщает об ошибке и не продолжает выполняться вниз.
@param {Object} [object] целевой объект
@param {String} [путь] требует пути значения
@param {*} [defaultVal] Значение по умолчанию, если значение не существует
@example
var object = { 'a': [{ 'b': { 'c': 3 } }] };
utils._get(object, 'a[0].b.c'); // => 3 (推荐使用)
utils._get(object, ['a', '0', 'b', 'c']); // => 3
utils._get(object, 'a.b.c', 'default'); // => 'default' (推荐使用)
_get = function (object, path, defaultVal) {
return _get(object, path, defaultVal)
}
_getObjArray
@description Возвращает массив значений ключа указанного объекта, поддерживает многоуровневое вложенное получение свойств, например: obj.x.y.z, быстро получает требуемый массив значений ключа в массиве
@param {Array} [objects] целевые объекты
var objects = [
{ 'a': { 'b': { 'c': 2 } } },
{ 'a': { 'b': { 'c': 1 } } }
]
utils._getObjArray(object, 'a.b.c') => [2, 1]
_getObjArray = function (objects, path) {
return _map(objects, _property(path))
}
_findIndex
@description Этот метод похож на find, разница в том, что этот метод возвращает значение индекса (index) первого элемента, который считается истинным значением по предикату, а не сам элемент.
@param {Array} [массив] целевой объект
@returns {Число} -1 означает, что соответствующее значение не найдено, остальные — индексы, соответствующие массиву
users = [
{ 'user': 'barney', 'active': false },
{ 'user': 'fred', 'active': false },
{ 'user': 'pebbles', 'active': true }
]
utils._findIndex(array, function(o) { return o.user == 'barney'; }) => 0
utils._findIndex(array, { 'user': 'fred', 'active': false }) => 1 (推荐使用)
utils._findIndex(array, ['active', false]) => 0 (推荐使用)
utils._findIndex(array, 'active') => 2 (推荐使用)
_findIndex = function (array, predicate, fromIndex = 0) {
return _findIndex(array, predicate, fromIndex)
}
_uniq
Дедупликация массива @description (чистый массив)
@example
var a =[1, 2, 1, 5, 1, 9]
utils._uniq(a) => [1, 2, 5, 9]
_pick
@description Создает объект с выбранным ключом из объекта.
@example
var object = { 'a': 1, 'b': '2', 'c': 3 }
utils._pick(object, ['a', 'c']) => { 'a': 1, 'c': 3 }
var object = { 'a': 1, 'b': '2', 'c': 3 }
utils._pick(object, ['a', 'c']) => { 'a': 1, 'c': 3 }
_omit
@description обратный выбор
@example
var object = { 'a': 1, 'b': '2', 'c': 3 }
utils._pick(object, ['a', 'c']) => { 'b': '2' }
_isUndefined
@description определяет, является ли оно неопределенным
@returns возвращает логическое значение
@example
var a
utils._isUndefined(a) => true
_isUndefined
@description определяет, является ли оно неопределенным
@returns возвращает логическое значение
@example
var a
utils._isUndefined(a) => true
_isNaN
@description определяет, является ли это NaN
@returns возвращает логическое значение
@example
var a = +'str'
utils._isNaN(a) => true
_isString
@description определяет, является ли String
@returns возвращает логическое значение
@example
var a = +'str'
utils._isString('abc') => true
utils._isString(1) => false
_debounce
@description функция защиты от сотрясений
Функция защиты от сотрясений действительно великолепна, поэтому многие кнопки в системе нуждаются в обработке против сотрясений. Например, кнопку экспорта, конечно, в дополнение к функции защиты от сотрясений, я также блокирую, чтобы избежать многократных нажатий, вызванных сетевыми причинами для запуска нескольких запросов.
// 导出
export: utils._debounce(() => {
if (this.exportLock) return
this.exportLock = true
exportCommonData({
...this.formQuery,
...this.filter
}).then(res => {
delete this.exportLock
res.url && window.open(res.url)
})
}, 1000),