underscore使用

underscore.js

在做本地缓存视频管理的时候,需要对数组进行大量的操作,本来React Native 有lodash工具库,旁边的前端同事使用的是underscore,大神在边上我就使用了underscore,其实api和lodash差不多,只是lodash更加完善,简单的处理underscore也足够。

直接下载underscore-min.js

1
import _ from './path/underscore-min';

下面是我主要用到的Api:

  1. map方法遍历数组或对象,将返回的结果组成一个新的数组或对象
1
2
3
4
5
6
7
8
9
10
11
12

let data = _.map([1,2,3],function(n){ retrun n*2; })
//data = [2,4,6]
let data = _map([{name:'james'},{name:'jakson'},{name:'tom'}],function(item){
return {
name:item.name,
isChecked:true
}
})
//data = [{name:'james',isChecked:true},
//{name:'jakson',isChecked:true},
// {name:'tom',isChecked:true}]
  1. filter返回结果为true的成员
1
2
let data = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
//data = [2,4,6]
  1. reject返回操作结果为false的成员
1
2
let data = _.filter([1, 2, 3, 4, 5, 6], function(num){ return num % 2 == 0; });
//data = [2,4,6]
  1. difference
1
2
let data = _.difference([1,2,3,5], [2,3,6,7,8])
//data=[1,5] 只保留[1,2,3,5]中不相同的
  1. uniq
1
2
3
4
5
6
7
8
9
_.uniq(array, [isSorted], [iteratee])

let data = _uniq([1,2,3,4,3])
//data=[1,2,3,4]

let data= _uniq([{id:1,name:'bob'},{id:2,name:'jane'},{id:3,name:'jack'},{id:1,name:'bob'}],false,(item)=>{
return item.id
})
//data=[{id:1,name:'bob'},{id:2,name:'jane'},{id:3,name:'jack'}]
  1. indexOf
1
2
_.indexOf([1, 2, 3], 2);
//1,
  1. contains
1
2
3
_.contains(list, value, [fromIndex])

//可以用includes
  1. compact返回一个除去所有false值的 array副本。

    在javascript中, false, null, 0, “”, undefinedNaN 都是false值.

1
2
_.compact([0, 1, false, 2, '', 3]);
=> [1, 2, 3]

更多Api参考文档http://www.css88.com/doc/underscore/