I save data to localStorage.
To be able to order the localStorage i use milliseconds as key.
(But localStorage doesn’t sort or order, so i need to build a array or object that i can sort by key)
JavaScript
x
9
1
var key = Date.now();
2
var value = {
3
"id": id,
4
"name": name
5
};
6
7
//ADD DATA TO OBJECT
8
localStorage.setItem(key, JSON.stringify(value));
9
Now i’d like to fetch localStorage and display the data ordered by key asc.
I tried:
JavaScript
1
22
22
1
//CONSOLE LOG LOCALSTORAGE
2
Storage {1614866637849: "{"id":"1","name":"A"}", 1614866687890: "{"id":"3","name":"C"}", 1614866642078: "{"id":"2","name":"B"}", length: 3}
3
4
//DECLARE NEW OBJ
5
var items = {};
6
7
//LOOP THREW localStorage
8
Object.keys(localStorage).forEach(function(key){
9
10
//FETCH THIS ROUND DATA
11
items[key] = JSON.parse(localStorage.getItem(key));
12
});
13
14
//CONSOLE LOG ITEMS
15
1614866637849: {…}, 1614866687890: {…}, 1614866642078: {…}}
16
17
//SORT ITEMS
18
var sorted_items = Object.keys(items).reduce((accumulator, currentValue) => {accumulator[currentValue] = items[currentValue]; return accumulator;}, {});
19
20
//CONSOLE LOG SORTED ITEMS
21
1614866637849: {…}, 1614866687890: {…}, 1614866642078: {…}}
22
So it looks like my ordering function does nothing?
How can i loop out my data from localStorage by key ASC?
The order i wan’t is:
….49
….78
….90
Advertisement
Answer
The easiest and smartest way was commented by @Mr.polywhirl
Just add .sort() in the forEach:
JavaScript
1
2
1
Object.keys(localStorage).sort().forEach(function(key){..
2