Skip welcome & menu and move to editor
Welcome to JS Bin
Load cached copy from
 
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>JS Bin</title>
</head>
<body>
</body>
</html>
 
html, body {
        height: 100%;
        margin: 0;
        padding: 0;
      }
      #map {
        height: 100%;
      }
 
var data = [
  { issues: [1, 2, 3], universe: 'new52' },
  { issues:[66, 77, 88], universe: 'earth one' },
  { issues:[2,11,22,33], universe: 'earth two' },
  { issues:[1,223,334], universe: 'silver age' }
];
var complexData = [
  { issues: [{
         id: 32,
         name:"Kingdom Come",
         authors: ["Mark Waid", "Alex Ross"],
         characters: ["Superman", "Batman", "Diana Prince", "Captain Marvel", "Spectre", "Norman McCay"]
       },
       {
         id: 33,
         name:"Injustice",
         characters: ["Superman", "Batman", "Diana Prince"]
       }], 
   universe: "mindgame one" 
 },
 
  { issues: [{
         id: 21,
         name:"Kingdom",
         authors: ["Some guy"],
         characters: ["Captain Marvel", "Norman McCay"]
       },
       {
         id: 13,
         name:"JLA",
         characters: ["Superman", "Batman", "Diana Prince"]
     }], 
   universe: 'mindgame two' 
 }
];
var SearchByIssue = function(data, lookForNumber) {
  return data.filter((set) => {
    return set.issues.some((number) => {
      return number === lookForNumber;
    });
  }).map((set) => set.universe);  
};
var SearchByCharacter = function(complexData, searchForName) {
      return complexData.filter((item) => {
                 return item.issues.some((issue) => 
                              issue.characters.some((character) => character === searchForName));
             })
      .map((box) => {
          return box.issues.map((issue) => {
                                    return {
                                        box: box.universe,
                                        id: issue.id,
                                        characters: issue.characters
                                    };
                                })
              .filter((issue) => (issue.characters.indexOf(searchForName) !== -1));
      })
      .reduce((a, b) => a.concat(b)); 
};
console.log(SearchByIssue(data, 1));
console.log(SearchByCharacter(complexData, "Captain Marvel"));
Output

You can jump to the latest bin by adding /latest to your URL

Dismiss x
public
Bin info
metaphoricalpro
0viewers