记录loads.js关于数组,字符,对象等常用方法。 并按功能分到一块方便查找
# 查
head(array) # 返回array的第一个元素
last(array) # 获取array最后一个元素
nth(array, n) # 获取第n个元素, n可以为负数
sortedIndex(array, value) # value可以插入已排序数组array的位置,返回索引 ([3,5], 4) => 1
xor([arrays]) # 返回多个数组的唯一值 ([2,1],[2,3]) => [1,3]
findIndex(array, value) # 查找value, 返回第一个匹配的值的索引
# 改
slice(array, [start], [end]) # 裁剪数组 不包括end
drop(array, [n=1]) # 切片, n是要去除的元素个数
dropRigth(array, [n=1]) # 切片 去除尾部元素
take(array, [n=1]) # 切片 从头开始取n个元素
takeRight(array, [n=1]) # 切片 从尾部开始提取n个元素
chunk(array, [size]) # 将array拆分成多个size长度的区块
compact(array) # 返回不包含(false,null,NaN,undefined,0,'')的真数组
concat(array, [values]) # 合并数组
fill(array, value, [start], [end]) # 用value值填充数组 会改变原数组
# 删
tail(array) # 去除array第一个元素
initial(array) # 去除array最后一个元素
pull(array, [values]) # 去除array中等于value的值
pullAll(array, values) # 类似pull 接收values数组
pullAt(array, [indexs]) # 原数组上移除索引为indexs的元素
remove(array, func) # 原数组上移除满足func返回条件的值
without(array, [values]) # 返回剔除values后的新array
# 其他
reverse(array) # 反转数组
intersection([arrays]) # 返回多个数组的交集
difference(array, [values]) # 返回非交集数组 ([1,2,3], [4,2]) => [1,3]
union([arrays]) # 多个数组的并集(已去重)
uniq(array) # 去重数组
flatten(array) # 减少一级array嵌套深度
flattenDeep(array) # array递归为一维数组
flattenDepth(array, [depth]) # 减少depth层嵌套
fromPairs(pairs) # 键值对数组改为对象。[['fred', 30]] => {'fred':30}
# 这两个有些像大学学过的向量运算
zip([arrays]) # 长度相同的数组打包 ([1,2],[3,4],[5,6]) => [[1,3,5],[2,4,6]]
unzip(array) # 对数组进行拆分([1,2,3],[4,5,6])=> [[1,4],[2,5],[3,6]]
countBy(coll, func) # 计数 (['one', 'two', 'three'], 'length') => {'3':2, '5':1}
size(coll) # 长度 数组返回元素个数,字符串返回字符长度, 集合返回可遍历值个数
every(coll, func) # 判断是否都为真 但会对空集合返回true
some(coll, func) # 有真则返回true
includes(coll, value, [fromIndex]) # 检查value是否在collection中,fromIndex为起始位置,返回布尔值
filter(coll, func) # 过滤 返回判断为真的新数组
reject(coll, func) # 与filter相反,返回非真新数组
find(coll, func) # 返回第一个判断为真的第一个元素
findLast(coll, func) # 类似于find,自右向左
flatMap(coll, func) # 返回扁平化后的数组 ([1,2], (n)=>[n,n]) => [1,1,2,2]
flatMapDeep(coll, func) # 深度扁平化 ([1,2], (n)=>[[n,n]]) => [1,1,2,2]
forEach/each(coll, func) # 遍历
invokeMap(coll, path, [args]) # 调用path的方法遍历coll,args为参数 ([123,456], String.property.split, '') => (['1','2','3'],['4','5','6'])
groupBy(coll, func) # 分组聚合 (['one', 'two', 'three'], 'length') => {'3': ['one', 'two'], '5': ['three']}
keyBy(coll, func) # 与groupBy类似, 不过每个key为func返回的值
map(coll, func) # 遍历coll后返回新的结果
orderBy(coll, [func], [orders]) # 排序
sortBy(coll, [func]) # 升序排序
sample(coll) # 返回随机元素
sampleSize(coll, n) # 返回n个随机元素
shuffle(coll) # 打乱集合顺序
partition(coll, [func]) # 创建一个分为两组的元素数组, 分别为结果为true和结果为false
# 示例:
var users = [
{ 'user': 'barney', 'age': 36, 'active': false },
{ 'user': 'fred', 'age': 40, 'active': true },
{ 'user': 'pebbles', 'age': 1, 'active': false }
];
_.partition(users, function(o) { return o.active; });
// => objects for [['fred'], ['barney', 'pebbles']]
reduce(coll, [func], [accumulator]) # 压缩 collection(集合)为一个值
reduceRight(coll, [func], [accumulator]) # 类似reduce, 自右向左
# 示例
_.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {
(result[value] || (result[value] = [])).push(key);
return result;
}, {});
// => { '1': ['a', 'c'], '2': ['b'] }
after(n, func) # 创建一个函数,被调用n次后,执行func
before(n, func) # 调用func函数次数不超过n次的函数, 超过之后返回最后一次调用的结果
ary(func, [n]) # 创建一个调用func的函数, n为func参数长度
bindKey(object, key, [partials]) # 创建一个函数,在object[key]上通过接收partials附加参数,调用这个方法, 允许重新定义绑定函数即使它还不存在
curry(func, [arity=func.length]) # 柯里化函数(笔试常考题)
curryRight(func, [arity=func.length]) # 柯里化函数,参数顺序自右向左
debounce(func, [wait], [options={}]) # 防抖函数,func调用后等待wait毫秒后执行, options为附加参数
throttle(func, [wait=0], [options={}]) # 节流函数,wait秒内最多执行func一次
defer(func, [args]) # 推迟调用, 附加参数args会传给func
delay(func, wait, [args]) # 延迟wait毫秒后调用func
flip(func) # 翻转func参数 返回新的函数
memoize(func, [resolver]) # 缓存func结果
negate(predicate) # 对断言函数(返回值为true/false)结果取反
once(func) # 返回只能调用func一次的函数,重复调用返回第一次调用结果
overArgs(func, [transforms]) # func参数为transforms的返回值
rest(func, [start]) # 除start外,其他参数作为数组传入, 类似于apply
spread(func, [start=0]) # 参数作为数组传入
unary(func) # 返回一个最多接收一个参数的函数, 忽略多余参数
wrap(value, [wrapper=identity]) # 创建一个函数,value包装在wrapper函数的第一个参数里, 附加参数给wrapper
# 转换
castArray(value) # 强制转换为array
toArray(value) # 转换value为数组
toFinite(value) # 转换为有限数字
toInteger(value) # 转换为一个整数
toLength(value) # 转换为可以用作数组长度的整数
toNumer(value) # 转换为一个数字
toSafeInteger(value) # 转换为安全整数
toPlainObject(value) # 转为普通对象
toString(value)
clone(value) # 浅拷贝
cloneDeep(value) # 深拷贝
# 比较
conformsTo(object, source) # 检查object是否符合source _.conformsTo({'a':1}, {'a': o=>o>1}) // false
eq(value, other) # 比较value与other值是否相等
gt(value, other) # 大于
lt(value, other) # 小于
lte(v, o) # 小于等于
gte(value, other) # 大于等于
isEqual(value, other) # 深比较 值完全相等 不比较类型
# 判断类型
isArguments(value) # value是否是类arguments对象
isArray(value) # 判断是否为array
isArrayBuffer(value)
isBoolean(value)
isBuffer(value)
isDate(value)
isElement(value)
isEmpty(value) # 检查 value 是否为一个空对象,集合,映射或者set
isArrayLike(value) # 是否是类数组
isArrayLikeObject(value) # 是否是类数组对象
isFinite(value) # 是否是有限数值
isFunction(value)
isInteger(value)
isLength(value) # 检查 value 是否为有效的类数组长度
isMap(value) # 检查 value 是否为一个 Map 对象。
isNaN(value)
isNative(value) # 是否是一个原生函数
isNil(value) # 是否是null或undefined
isNull(value) # 是否是null
isNumber(value)
isString(value)
isSymbol(value)
isUndefined(value)
isSet(value) # 检查 value 是否是一个Set对象。
isObject(value)
isObjectLike(value) # 是否是类对象
isPlainObject(value) # 是否是普通对象。 也就是说该对象由 Object 构造函数创建,或者 [[Prototype]] 为 null
isRegExp(value) # 是否为RegExp对象
ceil(number, [precision]) # 按precision(精度)向上舍入number
floor(number, [precision]) # 向下舍入number
round(number, [precision]) # 四舍五入
add(augend, addend) # 两数相加
divide() # 两数相除
max(array)
maxBy(array, func) # func为排序标准 对数组中对象求最值
mean(array) # 平均值
meanBy(array, func) # 数组中对象求均值
min(array)
minBy(array, func)
multiply(a,b) # 求a,b乘积
subtract(a,b) # 两数相减
sum(array) # 总和
sumBy(array, func)
clamp(number, [lower], upper) # 返回限制在 lower 和 upper 之间的值
inRange(number, [start], end) # 返回n是否在start与end之间,但不包括end
random([lower], [upper], [floating]) # 区间内的随机数
assign(object,[sources]) # 分配source对象的可枚举属性到object上
assignIn(object,[sources]) # 类似于assign,会遍历源对象
at(object, [paths]) # 创建一个数组,值来自object的paths路径对应的值
create(protoptype, [properties]) # 返回继承protoptype对象的新对象
defaults(object, [sources]) # 分配来源对象的可枚举属性到目标对象所有解析为 undefined 的属性上。 来源对象从左到右应用。 一旦设置了相同属性的值,后续的将被忽略掉。
findKey(object, [func]) # 返回最先被判断为真的元素key
findLastKey(object, [func]) # 类似于findKey, 反向遍历
forIn(object, [func]) # 遍历object
forInRight(object, [func])
camelCase(string) # 字符串转为驼峰写法
kebabCase(string) # 以-分开单词并小写 kebabCase
lowerCase(string) # 以空格分开单词并小写
upperCase(string) # 以空格分开单词并大写
snakeCase(string) # 以_分开单词并小写 snakeCase
startCase(string) # 首字母大写并以空格分隔单词,原string为全大写则不变 'Foo Bar'
lowerFirst(string) # string首字母小写
upperFirst(string) # string首字母大写
capitalize(string) # 字符串首字母转为大写,其他为小写
deburr(string) # 转换string中的字母为基本的拉丁字母,去除变音标记
toLower(string) # 整个string转为小写
toUpper(string) # 全大写
trim(string, [chars]) # 移除前面或后面的空格或指定字符
trimEnd(string, [chars]) # 移除后面的空格或指定字符
trimStart(string, [chars]) # 移除前面的空格或指定字符
truncate(string, [options={}]) # 超出options.length截断字符串, 截断后超出部分显示options.omission(默认为...)
unescape(string) # 转换string字符串中的 HTML 实体 &, <, >, ", ', 和 ` 为对应的字符
startsWith(string, target, position) # 检查字符串string是否以 target 开头
endsWith(string, target, position) # 检查字符串string是否以给定的target字符串结尾
escape(string) # 转义string中的"&", "<", ">", '"', "'", 和 "`" 字符为HTML实体字符
escapeRegExp(string) # 转义 RegExp 字符串中特殊的字符 "^", "$", "", ".", "*", "+", "?", "(", ")", "[", "]", "{", "}", 和 "|" '.'
pad(string, length, [chars='']) # 如果string长度小于length,则从左右侧填充chars字符
padEnd(string,lenght,[chars='']) # 右侧填充
padStart(string,length,[chars='']) # 左侧填充
repeat(string, [n=1]) # 重复n次给定字符串
split(string, separator, limit) # 拆分
replace(string, pattern, replacement) # 替换string字符串中匹配的pattern为给定的replacement
words(string, pattern) # 拆分string中的词为数组
template(string, options)
// 创建一个预编译模板方法,可以插入数据到模板中 "interpolate" 分隔符相应的位置。 HTML会在 "escape" 分隔符中转换为相应实体。 在 "evaluate" 分隔符中允许执行JavaScript代码。 在模板中可以自由访问变量。 如果设置了选项对象,则会优先覆盖 _.templateSettings 的值。
// 使用 "interpolate" 分隔符创建编译模板
var compiled = _.template('hello <%= user %>!');
compiled({ 'user': 'fred' });
// => 'hello fred!'
// 使用 HTML "escape" 转义数据的值
var compiled = _.template('<%- value %>');
compiled({ 'value': '