【发布时间】:2021-03-04 14:38:43
【问题描述】:
我将数据保存到 localStorage。
为了能够订购 localStorage,我使用毫秒作为键。
(但localStorage不排序或排序,所以我需要构建一个可以按键排序的数组或对象)
var key = Date.now();
var value = {
"id": id,
"name": name
};
//ADD DATA TO OBJECT
localStorage.setItem(key, JSON.stringify(value));
现在我想获取 localStorage 并显示按 asc 键排序的数据。
我试过了:
//CONSOLE LOG LOCALSTORAGE
Storage {1614866637849: "{"id":"1","name":"A"}", 1614866687890: "{"id":"3","name":"C"}", 1614866642078: "{"id":"2","name":"B"}", length: 3}
//DECLARE NEW OBJ
var items = {};
//LOOP THREW localStorage
Object.keys(localStorage).forEach(function(key){
//FETCH THIS ROUND DATA
items[key] = JSON.parse(localStorage.getItem(key));
});
//CONSOLE LOG ITEMS
1614866637849: {…}, 1614866687890: {…}, 1614866642078: {…}}
//SORT ITEMS
var sorted_items = Object.keys(items).reduce((accumulator, currentValue) => {accumulator[currentValue] = items[currentValue]; return accumulator;}, {});
//CONSOLE LOG SORTED ITEMS
1614866637849: {…}, 1614866687890: {…}, 1614866642078: {…}}
所以看起来我的排序函数什么都不做?
如何通过键 ASC 从 localStorage 中循环出我的数据?
我不想要的顺序是:
....49
....78
....90
【问题讨论】:
-
你试过了吗:
Object.keys(localStorage).sort().forEach? -
@Mr.Polywhirl 不,直到现在。但这似乎有效?!