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);