遍历
- each
// 数组拆分
_.each([1, 2, 3], function (num,key) {
console.log(num) // 1 2 3
console.log("key:"+key) // 0 1 2
});
// 对象拆分 注意,KEY VALUE 是倒的
let obj = {one: 1, two: 2, three: 3}
_.each(obj, (c,key)=>{
console.log("key:"+key) // one two there
console.log("value:"+c) // 1 2 3
});
// JSON对象
let obj = [{one: 1}, { one: 2 }, { one: 3 }]
_.each(obj, (c,key)=>{
console.log("key:"+key) // 0 1 2
console.log("value:"+c.one) // 1 2 3
});
- map
// 数组拆分
_.map([1, 2, 3], function (num,key) {
console.log(num) // 1 2 3
console.log("key:"+key) // 0 1 2
});
// 对象拆分 注意,KEY VALUE 是倒的
let obj = {one: 1, two: 2, three: 3}
_.map(obj, (c,key)=>{
console.log("key:"+key) // one two there
console.log("value:"+c) // 1 2 3
});
// JSON对象
let obj = [{one: 1}, { one: 2 }, { one: 3 }]
_.map(obj, (c,key)=>{
console.log("key:"+key) // 0 1 2
console.log("value:"+c.one) // 1 2 3
});
map each 区别 : map 有返回值 return each没有,所以有return的时候 ,记得 用map
_.each([1,2,3],function(num){return num *2}); //没有运行结果。
_.map([1,2,3],function(num){return num *2}); //运行结果:[2,4,6]
组合元素 reduce reduceRight
reduce 从第一个开始拼接
reduceRight 从最后一个开始拼接
const list = [[0, 1], [2, 3], [4, 5]];
const flat = _.reduce(list, function (a, b) {
return a.concat(b);
}, []);
console.log( flat); // [0,1,2,3,4,5]
// 链式写法 感觉比较好
const list = [[0, 1], [2, 3], [4, 5]];
const flat = list.chain().reduceRight (function (a, b) {
return a.concat(b);
}, []).values();
console.log( flat);// [4,5,2,3,0,1]
查找 Find
查到之后 就返回了 不会遍历
const even = _.find([1, 2, 3, 4, 5, 6], function (num) {
return num > 3;
});
console.log(even);// 4
过滤 filter
按条件过滤之后 就遍历完在返回所有符合条件的
const even = _.find([1, 2, 3, 4, 5, 6], function (num) {
return num > 3;
});
console.log(even);// [4,5,6]
判断 contains
存在就返回true
_.contains([1, 2, 3], 3); // true
合并 zip
_.zip(['moe', 'larry', 'curly'], [30, 40, 50], [true, false, false]);
// [["moe", 30, true], ["larry", 40, false], ["curly", 50, false]]
提取 pluck
map最常使用的用例模型的简化版本 萃取数组对象中某属性值
const stooges = [{ name: "moe", age: 40 }, { name: "larry", age: 50 }, { name: "curly", age: 60 }];
const var1 = _.pluck(stooges, "name");
console.log(var1); // ['moe','larry','curly']
判断最大最小值 max min
const stooges = [{name: 'moe', age: 40}, {name: 'larry', age: 50}, {name: 'curly', age: 60}];
_.max(stooges, function(stooge){ return stooge.age; });// 60
const numbers = [10, 5, 100, 2, 1000];
_.min(numbers);// 2
排序 sortBy
没有条件就倒序 有条件就按条件排序
const var1= _.sortBy([1, 2, 3, 4, 5, 6], function(num){ return Math.sin(num); });
console.log(var1);// [6, 5, 4, 3, 2, 1]
// 相同的方法
const arr=[1, 2, 3, 4, 5, 6]
console.log(arr.chain().reverse().value()); // [6, 5, 4, 3, 2, 1]
// 按条件 NAME 首字母 排序
const stooges = [{ name: "moe", age: 40 }, { name: "larry", age: 50 }, { name: "curly", age: 60 }];
const var1= _.sortBy(stooges, 'name');
console.log(var1);// [ { name: "curly", age: 60 }, { name: "larry", age: 50 },{ name: "moe", age: 40 }]
转换成一个数组 toArray
const ar = { a: 1, b: 2, c: 3 };
const var1 = _.toArray(ar);
console.log(var1);// [1,2,3]
将数组转换为对象 object
_.object(['moe', 'larry', 'curly'], [30, 40, 50]);
//{moe: 30, larry: 40, curly: 50}
_.object([['moe', 30], ['larry', 40], ['curly', 50]]);
// {moe: 30, larry: 40, curly: 50}
keys 和 values
_.keys({one: 1, two: 2, three: 3});
// ["one", "two", "three"]
_.values({one: 1, two: 2, three: 3});
// [1, 2, 3]
对象遍历 mapObject
_.mapObject({start: 5, end: 12}, function(val, key) {
return val + 5;
});
// {start: 10, end: 17}
把一个对象转变为一个[key, value]形式的数组 pairs
_.pairs({one: 1, two: 2, three: 3});
=> [["one", 1], ["two", 2], ["three", 3]]
去除空值 compact
_.compact([0, 1, false, 2, '', 3]);
// [1, 2, 3]
随机数 random
_.random(0, 100);
// 42
唯一ID uniqueId
_.uniqueId('contact_');
// 'contact_104'
返回属性值 result
var object = {cheese: 'crumpets', stuff: function(){ return 'nonsense'; }};
_.result(object, 'cheese');
// "crumpets"
_.result(object, 'stuff');
// "nonsense"
_.result(object, 'meat', 'ham');
// "ham"
链式 chain() value()
var stooges = [{name: 'curly', age: 25}, {name: 'moe', age: 21}, {name: 'larry', age: 23}];
var youngest = _.chain(stooges)
.sortBy(function(stooge){ return stooge.age; })
.map(function(stooge){ return stooge.name + ' is ' + stooge.age; })
.first()
.value();
// "moe is 21"
_([1, 2, 3]).value();
// [1, 2, 3]
函数 delay 和 defer
delay = setTimeout
var log = _.bind(console.log, console);
_.delay(log, 1000, 'sleep 1s');
// sleep 1s