-5
var developers = [
{ name: "Joe", age: 23, overallLevel: "high", date: "Aug 14, 2015" },
{ name: "Sue", age: 28, overallLevel: "advanced", date: "Aug 11, 2015" },
{ name: "Jon", age: 32, overallLevel: "high", date: "Aug 10, 2015" },
{ name: "Bob", age: 24, overallLevel: "high", date: "Sept 07, 2015" },
{ name: "Johnson", age: 23, overallLevel: "advanced", date: "Aug 20, 2015" },
{ name: "Paul", age: 25, overallLevel: "basic", date: "Jan 30, 2016" },
{ name: "Jane", age: 27, overallLevel: "intermediate", date: "Aug 30, 2016" },
{ name: "Chris", age: 20, overallLevel: "basic", date: "Aug 1, 2016" },
{ name: "Susan", age: 25, overallLevel: "basic", date: "Dec 12, 2015" },
{ name: "Jenny", age: 23, overallLevel: "intermediate", date: "Aug 30, 2016" },
{ name: "Stone", age: 25, overallLevel: "basic", date: "June 13, 2016" },
]

Following is the data extracted from array which indicates levels followed by their dates.

"high" : Aug 10, 2015, Aug 14, 2015, Sept 07, 2015

"advanced" : Aug 11, 2015, Aug 20, 2015

"basic" : Jan 30, 2016, Aug 1, 2016, Dec 12, 2015, June 13, 2016,

"intermediate" : Aug 30, 2016, Aug 30, 2016

Expected output: Require the range of min and max date i.e shown further

{ high : Aug 10, 2015 - Sept 07,2015, advanced : Aug 11, 2015 - Aug 20,2015, basic : Dec 12, 2015 - Aug 1,2016, intermediate : Jan 30,2016 }

This is what i was able to get the count of overallLevel for grouping purpose.

var developers = [
{ name: "Joe", age: 23, overallLevel: "high", date: "Aug 14, 2015" },
{ name: "Sue", age: 28, overallLevel: "advanced", date: "Aug 11, 2015" },
{ name: "Jon", age: 32, overallLevel: "high", date: "Aug 10, 2015" },
{ name: "Bob", age: 24, overallLevel: "high", date: "Sept 07, 2015" },
{ name: "Johnson", age: 23, overallLevel: "advanced", date: "Aug 20, 2015" },
{ name: "Paul", age: 25, overallLevel: "basic", date: "Jan 30, 2016" },
{ name: "Jane", age: 27, overallLevel: "intermediate", date: "Aug 30, 2016" },
{ name: "Chris", age: 20, overallLevel: "basic", date: "Aug 1, 2016" },
{ name: "Susan", age: 25, overallLevel: "basic", date: "Dec 12, 2015" },
{ name: "Jenny", age: 23, overallLevel: "intermediate", date: "Aug 30, 2016" },
{ name: "Stone", age: 25, overallLevel: "basic", date: "June 13, 2016" },
],
    overallLevel = developers.reduce(function (r, a) {
        r[a.overallLevel] = (r[a.overallLevel] || 0) + 1;
        return r;
    }, {});

console.log(overallLevel);

Please visit this : https://jsfiddle.net/Saily/6nzxd6ss/

9
  • Where is your script ? You are suppose to share your efforts as well.. Commented Jun 1, 2016 at 11:54
  • What's your question? Commented Jun 1, 2016 at 11:58
  • 1
    @SailyJadhav, This is just what Nina had answered ain't it ? Commented Jun 1, 2016 at 12:03
  • 1
    LOC's get reduced this is the reason to use reduce @NinaScholz Commented Jun 1, 2016 at 12:10
  • 1
    You have to actually put in some of your own effort. This isn't a "write code for me" site. Also, you still haven't clearly conveyed why you need to use .reduce() for this. Commented Jun 1, 2016 at 12:29

1 Answer 1

1

I also enjoy using reduces. It's very handy for a lot of cases.

var developers = [
{ name: "Joe", age: 23, overallLevel: "high", date: "Aug 14, 2015" },
{ name: "Sue", age: 28, overallLevel: "advanced", date: "Aug 11, 2015" },
{ name: "Jon", age: 32, overallLevel: "high", date: "Aug 10, 2015" },
{ name: "Bob", age: 24, overallLevel: "high", date: "Sept 07, 2015" },
{ name: "Johnson", age: 23, overallLevel: "advanced", date: "Aug 20, 2015" },
{ name: "Paul", age: 25, overallLevel: "basic", date: "Jan 30, 2016" },
{ name: "Jane", age: 27, overallLevel: "intermediate", date: "Aug 30, 2016" },
{ name: "Chris", age: 20, overallLevel: "basic", date: "Aug 1, 2016" },
{ name: "Susan", age: 25, overallLevel: "basic", date: "Dec 12, 2015" },
{ name: "Jenny", age: 23, overallLevel: "intermediate", date: "Aug 30, 2016" },
{ name: "Stone", age: 25, overallLevel: "basic", date: "June 13, 2016" },
],
reduced = developers.reduce((p,c) => {var d = new Date(c.date);
                                      p[c.overallLevel] ? d < p[c.overallLevel][0] && d < p[c.overallLevel][1] ? p[c.overallLevel][0] = d
       	                                                                                                       : p[c.overallLevel][1] = d
                                                        : p[c.overallLevel] = [d,d];
                                      return p},{});
reduced = Object.keys(reduced).reduce((p,c) => (p[c] = p[c].map(e => e.toDateString(2)), p),reduced);
       
console.log(reduced);

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.