Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- function deepSum(o,n) {
- var c=0;
- _.each(_.keys(o||{}), k => { k===n ? c+=parseInt(o[n])||0 : c+=deepSum(o[k],n)});
- return c;
- }
- var item = {
- doc_count: 2,
- val: {
- buckets: [{
- one: {
- doc_count: 10,
- count: 100
- },
- two: {
- doc_count: 2
- }
- }, {
- doc_count: 3
- }],
- doc_count: 4
- }
- }
- var total = deepSum(item, "doc_count");
- console.log("Total 21 === ", total);
- var fail_path_item = {
- doc_count: null,
- val: {
- buckets: [{
- one: {
- doc_count: [],
- count: 100,
- test: {
- doc_count: function(){ return 1000 }
- }
- },
- two: {
- doc_count: "",
- nested: {
- doc_count: 5
- }
- }
- }, {
- doc_count: "zxc0FF"
- }],
- doc_count: 7,
- undef:{
- doc_count: undefined
- }
- }
- }
- console.log("Total 12 === ", deepSum(fail_path_item, "doc_count"));
- console.log("Total 15 === ", deepSum({doc_count: "0xF"}, "doc_count"));
- console.log("Total 0 === ", deepSum({}, "doc_count"));
- console.log("Total 0 === ", deepSum(null, "doc_count"));
- console.log("Total 0 === ", deepSum(undefined, "doc_count"));
- console.log("Total 0 === ", deepSum(NaN, "doc_count"));
- console.log("Total 0 === ", deepSum(1/0, "doc_count"));
- function Obj(){
- this.doc_count = 1
- }
- Obj.prototype.createNested = function() {
- this.prop = {
- doc_count: 10
- }
- }
- var objItem = new Obj()
- objItem.createNested()
- console.log("Total 11 === ", deepSum( objItem, "doc_count"));
- class User {
- constructor( count ) {
- this.score = count ;
- this.prevScores = [{ score: count+1 }]
- }
- }
- console.log("Total 201 === ", deepSum( new User(100), "score"));
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement