集合(数组或可枚举的对象),lodash
参考:https://www.lodashjs.com/docs/lodash.countBy
集合的概念有 array,map,set;lodash好像专指数组,或者可枚举的对象
countBy 返回一个组成集合对象,根据给出方法统计符合的个数,好像只对数组有用
console.log(countBy([6.1, 4.2, 6.3], Math.floor)); // {4: 1, 6: 2} console.log(countBy(['one', 'two', 'three'], 'length')); // {3: 2, 5: 1}
forEachRight() // 反方向遍历数组
findLast() // 反方向查找元素
groupBy() // 和countBy类似,返回一个组成聚合的对象。但是返回了合并项
console.log(groupBy([6.1, 4.2, 6.3], Math.floor)); // { '4': [4.2], '6': [6.1, 6.3] }
invokeMap(collection, path, [args]) // 和 arr.map()类似,返回处理后的数组
console.log(invokeMap([123, 456], String.prototype.split, '')); // [['1', '2', '3'], ['4', '5', '6']]
keyBy() 根据二维数组中元素对象中的值作为键值,生成一个新数组
var array = [ { 'dir': 'left', 'code': 97 }, { 'dir': 'right', 'code': 100 } ]; let ret = keyBy(array, function(o) { return String.fromCharCode(o.code); }); console.log(ret) // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } } ret = keyBy(array, 'dir'); console.log(ret) // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }
orderBy() 根据二维数组元素对象中的值排序,生成一个新数组
var users = [ { user: "fred", age: 48 }, { user: "barney", age: 34 }, { user: "fred", age: 40 }, { user: "barney", age: 36 }, ]; // 以 `user` 升序排序 再 `age` 以降序排序。 let res = orderBy(users, ["user", "age"], ["asc", "desc"]); console.log(res); // objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]
partition() 根据给定的条件将一个数组拆分成两个数组
var users = [ { user: "barney", age: 36, active: false }, { user: "fred", age: 40, active: true }, { user: "pebbles", age: 1, active: false }, ]; let res = partition(users, function (o) { return o.active; }); console.log(res); // [[{ user: "fred", age: 40, active: true }], [{ user: "fred", age: 40, active: true },{ user: "pebbles", age: 1, active: false }]]
sample(arr) 获取数组中的随机元素
let random = sample([1, 2, 3, 4]); console.log(random)
sampleSize(arr,num) 获取多个随机元素
let res = sampleSize([1, 2, 3], 2); console.log(res) // => [3, 1]
shuffle(arr) 获取被打乱的数组(集合)== smpleSize(arr,arr.length)

浙公网安备 33010602011771号