javascript - Does _.pluck preserves the original index of the "plucked" array? -
i have mongodb document array of objects field looking this:
"leaving_users" : [ { "user_id" : "fz78pr82jpz66gc3p", "leaving_date" : isodate("2015-06-12t14:14:14.501z") } ] can use _.pluck obtain leaving_date related specific user_id?
my code seems work fine wanted check right way it, , sure won't end different index if use _.pluck function.
here code:
if (doc.leaving_users //guarding //if user belongs leaving_users object array && _.pluck(doc.leaving_users, "user_id").indexof(userid) != -1 //if leaving_date field after yesterday && doc.leaving_users[_.pluck(doc.leaving_users, "user_id").indexof(userid)].leaving_date > yesterday) { leftrecently = true; } else{ leftrecently = false; } bonus question: how make more elegant?
yes, indexes same. clear if @ the implementation of _.pluck:
_.pluck = function(obj, key) { return _.map(obj, _.property(key)); }; ...and the implementation of _.map:
_.map = _.collect = function(obj, iteratee, context) { iteratee = cb(iteratee, context); var keys = !isarraylike(obj) && _.keys(obj), length = (keys || obj).length, results = array(length); (var index = 0; index < length; index++) { var currentkey = keys ? keys[index] : index; results[index] = iteratee(obj[currentkey], currentkey, obj); } return results; }; that said, wouldn't call _.pluck twice that, , don't think i'd use _.pluck @ all, i'd use _.findindex , save result:
var index; if (doc.leaving_users //guarding //if user belongs leaving_users object array && (index = _.findindex(doc.leaving_users, function(e) { e.user_id === userid; }) !== -1) //if leaving_date field after yesterday && doc.leaving_users[index].leaving_date > yesterday) { leftrecently = true; } else{ leftrecently = false; }
Comments
Post a Comment