你的位置:首页 > 软件开发 > Java > lodash用法系列,数组集合操作

lodash用法系列,数组集合操作

发布时间:2015-12-01 21:00:06
Lodash用来操作对象和集合,比Underscore拥有更多的功能和更好的性能。官网:https://lodash.com/引用:<script src="http://www.cnblogs.com///cdnjs.cloudflare.com/ajax/li ...

 

Lodash用来操作对象和集合,比Underscore拥有更多的功能和更好的性能。官网:https://lodash.com/首先通过npm安装lodash:在js文件中引用lodash:

_.forEach(collection, function(name){});_.forEach(collection, function(name, index){})
【sortBy】● 在匿名函数中声明排序字段【sortBy】_.sortBy(arr, 'name');● 通过字符串数组声明排序字段【sortBy】_.sortBy(arr, ['name','age']);■ 向一个集合中插入某个元素而不改变固有的顺序【sortedIndex】

 

var collection = ['a', 'b', 'c', 'd', 'f'];console.log('before: ' + collection.join(' '));//要插入的值var toBeInserted = 'e';//要插入值再数组中的索引var sortedIndex = _.sortedIndex(collection, toBeInserted);//插入 splice中数组的指定索引位置插入元素,0表示有0个元数组元素删除collection.splice(sortedIndex, 0, toBeInserted);console.log('after:' + collection.join(' '));
【where】

 

var collection1 = [ {name: 'aa', age:20, gender: 'm'}, {name: 'bb', age:21, gender: 'f'}, {name: 'cc', age:22, gender: 'm'}];var result1 = _.where(collection1, {age:20, gender:'m'});_.forEach(result1, function(item){ console.log(item.name);});
【filter】【filter】【reject】【find, findLast】【take】【take】【takeRight】【takeRight】【chunks,isUndefined,last,defer,partial】

 

var collection1 = _.range(10000), chunks = _.chunk(collection1,50);//每一份50个,总共分为20份//处理chunks,无限递归function process(chunks, index){ //找到需要被处理的chunk var chunk = chunks[index]; //判断chunk是否为undefined if(_.isUndefined(chunk)){  return; } console.log('working ' + _.last(chunk)); //defer让堆栈上有足够的时间作清理,defer接受一个回调函数 //partial让某个函数执行 _.defer(_.partial(process, chunks, ++index));}process(chunks,0);
还可以根据集合长度来进行份数划分。

 

var collection _.range(10),  size = Math.ceil(0.25 * collection.length);_.chunk(collection, size);
【uniq】

 

/去除字符串数组中的重复部分var collection = ['',''];_.uniq(collection);//uniq接受匿名函数var collection = [  {firstName: '', lastName: ''},  ...];_.uniq(collection, function(item){  return item.firstName + item.lastName;})
【groupBy】【groupBy】【min】_.min(collectin, 'age');■ 获取最大,根据匿名函数【max】【size】

 

var collection = [  {name: ''},  ...];var first = _.first(collection);_.size(collection);_.size(first.name);//获取字符串的长度
【pluck,flatten】以下想获取所有集合元素中的employees下的所有对象,即[ { name: 'b' }, { name: 'c' }, { name: 'e' }, { name: 'f' } ]。第一步通过pluck方法获取[ [ { name: 'b' }, { name: 'c' } ],[ { name: 'e' }, { name: 'f' } ] ]。第二步通过flatten方法获取想要的结果。

 

var collection = [ {employer: 'a', employees: [{name:'b'},{name:'c'}]}, {employer: 'd', employees: [{name:'e'},{name:'f'}]}];//pluck找出符合条件的字段,//[ [ { name: 'b' }, { name: 'c' } ],[ { name: 'e' }, { name: 'f' } ] ]var tempResult = _.pluck(collection, 'employees');console.log(tempResult);//[ { name: 'b' }, { name: 'c' }, { name: 'e' }, { name: 'f' } ]var employees = _.flatten(tempResult);console.log(employees);var result = _.filter(employees, function(item){ return (/^[bx]/i).test(item.name);//找出name值以b或x开头的});console.log(result);
■ 去除集合中的无效元素,比如null, 0, undefined等。【compact】

 

var collection = [ {name: 'aa'}, 0, {name: 'bb'}, null, {name:'cc'}, undefined, {name:'dd'}];var letters = ['a', 'b'],//过滤条件 compactResult = _.compact(collection), result = [];//遍历打印_.forEach(compactResult, function(item){ console.log(item.name);});//操作某个元素_.each(letters, function(letter){ var filterResult = _.filter(compactResult, function(item){  return _.startsWith(item.name.toLowerCase(), letter); }); //合并数组 result = result.concat(filterResult);});//[ { name: 'aa' }, { name: 'bb' } ]console.log(result);
【pluck, compact, startsWith】以下,除去不包含name字段的集合元素。

 

var collection = [  {name: 'a'},  {name: 'b'},  {name: 'c'},  {},  true,  1];//先筛选出包含name字段的值,不包含的显示undefinedvar pluckResult = _.pluck(collection, 'name');//[ 'a', 'b', 'c', undefined, undefined, undefined ]console.log(pluckResult);var letters = ['a', 'b'],  //再去除undefined  compactResult = _.compact(pluckResult),  result = [];//[ 'a', 'b', 'c' ]console.log(compactResult);_.each(letters, function(letter){  var filterResult = _.filter(compactResult, function(item){   return _.startsWith(item.toLowerCase(), letter);  });  result = result.concat(filterResult);});console.log(result);
【every】判断所有集合元素哟啊满足某种条件。

 

var _ = require('lodash');var collection = [  {name: 'a'},  {name: 'b'},  {name: 'c'}];if(!_.every(collection, 'name')){  console.log("有集合元素不包含name字段");}
■ 并集、交集、补集【union, interseciton, xor】

 

var a = [];var b = [];var c = [];_.union(a, b, c);_.intersection(a, b, c);_.xor(a, b);

原标题:lodash用法系列,数组集合操作

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录