我一直在为如何对本地存储数据的输出进行排序而苦苦挣扎。我想根据存储的产品id对输出(asc)进行排序。有人知道如何解决这个问题吗?
Thx!
function showCheckout() {
Cart = JSON.parse(localStorage.getItem('cartStorage'));
cartTbody = '';
if (Cart) {
$.each(Cart, function(index, value) {
if (value !== null) {
cartTbody += '<tr id="row' + value['id'] + '">' +
'<td> + value['product_name'] + '</td>' +
'</tr>';
}
});
}
$( "#cartContainer tbody" ).html(cartTbody);
}
好的,所以您想在将Cart的每个元素的信息附加到表的行之前对其进行排序。
我建议您边走边在容器中插入行,从而将它们放置到正确的索引中
var $container = $( "#cartContainer tbody" );
$container.empty();
Cart = JSON.parse(localStorage.getItem('cartStorage'));
$.each(Cart, function(index, value) {
var $row = $("<row/>").attr("id",row + value['id'])
$("<td/>").text(value['product_name']).appendTo($row);
//Here you determine where row should be inserted.
var inserted = false;
$container.find("row").each(function(){
if(!inserted && $(this).attr("id").localeCompare(value['id'])>0){
$(this).before($row);
inserted = true;
}
});
if(!inserted){
$container.append($row);
}
}
这个方法中有很多jquery调用,所以如果你的数组很大,为了性能起见,最好先对它进行排序,然后按顺序插入。