JSFiddle - React, Tailwind, and code Playground

by Salmin Skenderovic

HTML

<div id="list">
  
</div>

JavaScript

var filter = {
  "color": ["blå", "röd"],
  "event": ["party"]
};

var list = [{
  "name": "Blomma1",
  "attribute": {
    "color": ["lila", "vit"],
    "event": ["bröllop"]
  }
},
{
  "name": "Blomma2",
  "attribute": {
    "color": ["blå", "gul"],
    "event": ["party"]
  }
},
{
  "name": "Blomma3",
  "attribute": {
    "color": ["röd", "vit"],
    "event": ["party"]
  }
}]


// Compares ["a", "b", "c"] with ["c", "d", "e"]
function compareArrays(a, b) {
		for	(var i=0;i<a.length;i++) {
    		if ((b.indexOf(a[i]) >= 0))
        return true;
    }
    return false;
}

// Returns a sorted list
function sortList(){
		var sortedList = [];
    list.map(function(flower, index){
    
      if (filterFlower(flower)) {
        sortedList.push(flower);
      }
    });
    return sortedList;
}

// Compares filter with attributes
function filterFlower(flower) {
  var shouldReturn = true;
  for (var group in flower.attribute) {
    var found = compareArrays(flower.attribute[group], filter[group]);
    if (!found) {
      shouldReturn = false
    }
  }
  return shouldReturn;
}





var sortedList = sortList();
console.log(sortedList);