svetlozar_kirkov

Group By Criteria (Homework)

Mar 20th, 2015
309
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. "use strict";
  2. function Person(firstName, lastName, age) {
  3.     this.firstName = firstName;
  4.     this.lastName = lastName;
  5.     this.age = age;
  6. }
  7. var people = [
  8.     new Person("Scott", "Guthrie", 38),
  9.     new Person("Scott", "Johns", 36),
  10.     new Person("Scott", "Hanselman", 39),
  11.     new Person("Jesse", "Liberty", 57),
  12.     new Person("Jon", "Skeet", 38)
  13. ];
  14. function groupBy(criteria) {
  15.     function personToString(person) {
  16.         var result = person.firstName + ' ' + person.lastName + '(age ' + person.age + ')';
  17.         return result;
  18.     }
  19.     var criteriaArr = [];
  20.     for (var i in people) {
  21.         var tempCriteria = people[i][criteria];
  22.         criteriaArr.push(tempCriteria);
  23.     }
  24.     criteriaArr = criteriaArr.reduce(function(a,b){if(a.indexOf(b)<0)a.push(b);return a;},[]);
  25.     var resultObj = [];
  26.     for (var k in criteriaArr) {
  27.         var tempArr = [];
  28.         for (var m in people) {
  29.             if (people[m][criteria] === criteriaArr[k]) {
  30.                 tempArr.push(personToString(people[m]));
  31.             }
  32.         }
  33.         var obj = {'group' : 'Group ' + criteriaArr[k], 'array' : tempArr};
  34.         resultObj.push(obj);
  35.     }
  36.     for (var z in resultObj) {
  37.         console.log(resultObj[z].group + ' : ' + resultObj[z].array);
  38.     }
  39. }
Advertisement
Add Comment
Please, Sign In to add comment