_.zip = function() { var args = slice.call(arguments); var length = _.max(_.pluck(args, 'length')); var results = new Array(length); for (var i = 0; i < length; i++) results[i] = _.pluck(args, "" + i); return results; };
exports.listInfo = function (url, list, show_details, callback) { var db = couchdb(url); var colwidth = _.max(list.map(function (l) { return l.length; })); async.forEachSeries(list, function (l, cb) { if (show_details) { db.client('GET', l, {}, function (err, info) { if (err) { if (err.error === 'unauthorized') { console.log(l); return cb(); } return cb(err); } console.log( utils.padRight(l, colwidth + 4) + utils.padRight(info.doc_count + ' docs', 16) + utils.formatSize(info.disk_size) ); cb(); }); } else { console.log(l); setImmediate(cb); } }, callback); };
assignItemID: function(item) { 'use strict'; if (this.built.length === 0) { item.id = 1; return; } item.id = _.max(this.built, function(e) { return e.id; }).id + 1; },
var ngrams = function(sequence, n) { var result = []; if (!_(sequence).isArray()) { return result; } var count = _.max([0, sequence.length - n + 1]); for (var i = 0; i < count; i++) { result.push(sequence.slice(i,i+n)); } return result; }
setTimeout(function() { if(!_.isNull(this.game)) { if(this.game.found.length > 0) { var winner = _.invert(this.game.scores)[_.max(this.game.scores)]; event.reply('GAME OVER. THE WINNER IS ' + winner.toUpperCase() + ' WITH ' + this.game.scores[winner]); event.reply(this.game.solutions.length - this.game.found.length + ' solutions remained.'); } else { event.reply('NO SOLUTIONS FOUND. YOU ARE ALL RUBBISH.'); } this.game = null; } }.bind(this), 40000);
var ngrams = function(sequence, n, startSymbol, endSymbol) { var result = []; if (!_(sequence).isArray()) { sequence = tokenizer.tokenize(sequence); } var count = _.max([0, sequence.length - n + 1]); // Check for left padding if(typeof startSymbol !== "undefined" && startSymbol !== null) { // Create an array of (n) start symbols var blanks = []; for(var i = 0 ; i < n ; i++) { blanks.push(startSymbol); } // Create the left padding for(var p = n - 1 ; p > 0 ; p--) { // Create a tuple of (p) start symbols and (n - p) words result.push(blanks.slice(0, p).concat(sequence.slice(0, n - p))); } } // Build the complete ngrams for (var i = 0; i < count; i++) { result.push(sequence.slice(i, i + n)); } // Check for right padding if(typeof endSymbol !== "undefined" && endSymbol !== null) { // Create an array of (n) end symbols var blanks = []; for(var i = 0 ; i < n ; i++) { blanks.push(endSymbol); } // create the right padding for(var p = n - 1 ; p > 0 ; p--) { // Create a tuple of (p) start symbols and (n - p) words result.push(sequence.slice(sequence.length - p, sequence.length).concat(blanks.slice(0, n - p))); } } return result; }
this.listener = function(event) { if(!_.isNull(this.game) && this.game.channel === event.channel.name) { if(_.include(this.game.solutions, event.message) && !_.include(this.game.found, event.message)) { if(!_.has(this.game.scores, event.user)) this.game.scores[event.user] = 0; this.game.scores[event.user]++; this.game.found.push(event.message); event.reply(event.user + ': ' + event.message.toUpperCase() + ' IS CORRECT. ' + this.game.found.length + '/' + this.game.solutions.length + ' WORDS FOUND'); if(this.game.found.length === this.game.solutions.length) { var winner = _.invert(this.game.scores)[_.max(this.game.scores)]; event.reply('ALL WORDS FOUND. THE WINNER IS ' + winner.toUpperCase() + ' WITH ' + this.game.scores[winner]); this.game = null; } } } }.bind(this);
// contains: 判断元素是否在list中 console.log(_.contains([1,2,3,4], 8)); // invoke: 在list里的每个元素上调用名为methodName的函数,任何附加的函数传入,invoke将会转给调用的函数 var v = _.invoke([[2,1,3], [4,5,2]], 'sort') console.log("v", v); // pluck: 提取一个集合里指定的属性值 var users = [ {name:'moe', age: 40}, {name:'larry', age: 50} ]; console.log(_.pluck(users, 'name')); // max, min, sortBy:取list中的最大,最小元素,自定义比较器 console.log(_.max(users, function(stooge){ return stooge.age })); console.log(_.min(users, function(stooge){ return stooge.age //{ name: 'moe', age: 40 } })); console.log(_.sortBy([3,4,1,2,6], function(num){ return Math.max(num);//[ 1, 2, 3, 4, 6 ] })); // groupBy 一个集合分成多个集合 console.log(_.groupBy(['one', 'two', 'three'], 'length'));//{ '3': [ 'one', 'two' ], '5': [ 'three' ] } // size 得到list中元素个数 console.log(_.size({one:1, two:2, three: 3})); //3 // shuffle:随机打乱一个数据 console.log(_.shuffle([1,2,3,4,5,6,7])); // countBy 把一个数据分组后计数
Helpers.prototype.getRange = function(array) { return _.max(array) - _.min(array); }