Let's say I have a list like so:
var list = [{
title: 'Green',
data: {
test: 'world'
}
}, {
title: 'Blue',
data: {
test: 'world'
}
}, {
title: 'Red',
data: {
test: 'world'
}
}];
and I have a simple array like this: var orderList = ['Red', 'Green', 'Blue']
.
How would I make it so anytime the list
array gets created (and its random) for then for it to be sorted by the order of which orderBy
goes? So, if an array item's title
is Red
... it gets put at top and if it's Green
... it goes below the Red
object.
Edit: This is NOT sorting A-Z because I want to list it from the order the orderList
is on.
The problem happens when the user selected, let's say, Green
, well.. it should be first but for some reason, I get null, Green
or something like that.
var randomBtn = document.querySelector('.random');
var orderIt = document.querySelector('.orderIt');
var selectedList = document.querySelector('.selectedList');
var orderedList = document.querySelector('.orderedList');
orderIt.addEventListener('click', function(e) {
orderBy(list);
});
var list = [{
title: 'Green',
data: {
test: 'world'
}
}, {
title: 'Blue',
data: {
test: 'world'
}
}];
selectedList.innerHTML = JSON.stringify(list, null, 4)
var orderList = ['Red', 'Green', 'Blue'];
var orderBy = function(list) {
var tempArr = [];
for (var i = 0; i < list.length; i++) {
var getItem = list.filter(function(e) {
return e.title === orderList[i];
})[0];
tempArr.push(getItem);
}
orderedList.innerHTML = JSON.stringify(tempArr, null, 4);
}
<button class='orderIt'>Order by Heiarchy</button>
<br /><br />
<pre class='selectedList'></pre>
Ordered List: must always be RED, GREEN, BLUE.
<pre class='orderedList'></pre>