underscore 小结

21 篇文章 0 订阅

遍历

  • 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  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值