[英]Reverse object in jQuery.each
HTML:
<input id="sdata" type="hidden" value='{"1651":["12","1"],"1650":["30","0"],"1649":["20","0"],"1648":["13","2"],"1647":["11","0"],"1646":["10","0"],"1645":["12","0"],"1644":["8","0"],"1643":["16","1"],"1642":["10","1"],"1641":["10","0"],"1640":["18","3"]}' />
JS:
var data = $.parseJSON($('#sdata').val());
$.each(data, function(id, sc) {
alert(id);
}
OUT:1640,1641,1642,......,1651
如何以相反的順序(例如1651,1650 ......)?
事實上,你不能以任何可靠的方式。 因為您枚舉了一個Object,所以從來沒有保證訂單。
如果需要有保證的數字順序,則需要使用數組,然后向后迭代。
編輯:這會將您的對象轉換為數組,並執行反向迭代。
請注意,它僅在所有屬性都是數字時才有效。
var data = $.parseJSON($('#sdata').val());
var arr = [];
for( var name in data ) {
arr[name] = data[name];
}
var len = arr.length;
while( len-- ) {
if( arr[len] !== undefined ) {
console.log(len,arr[len]);
}
}
還有另一個解決方案,一個相當簡單的方法:
$(yourobject).toArray().reverse();
而已。
我嘗試了這個,它對我來說很有效。
var data = $.parseJSON($('#sdata').val());
$.each(data.reverse(), function(id, sc) {
alert(id);
});
唯一的變化是第2行的“reverse()”。
如果您需要做的就是從JSON生成一些HTML並將生成的元素以相反的順序放入容器中,那么在構建HTML時可以使用jQuery的prependTo方法。
var container = $('<div />');
$.each(data, function (key, value) {
$('<div>' + value + '</div>').prependTo(container);
});
對象
如果你正在處理一個對象,reverse()將無法正常工作! 相反,你可以這樣做來維持秩序。
$.each(Object.keys(myObj).reverse(),function(i,key){
var value = myObj[key];
//you have got your key and value in a loop that respects the order, go rock!
});
jsonObj = [];
$.each(data.reverse(), function (i, dt) {
jsonObj.push({
'id': dt.id
});
這是一個似乎對我有用的選項。 希望這有助於某人。 顯然只適用於簡單的對象(非嵌套),但我想你可以通過一些額外的工作找出更復雜的方法。
var reversed_object = {};
Object.keys(original_object).reverse().forEach(function(key)
{ reversed_object[key] = original_object[key]; });
你可以使用javascript函數sort()或reverse()
var data = $.parseJSON($('#sdata').val());
data.reverse();
$.each(data, function(id, sc) {
alert(id);
}
我不知道,但是對於我使用的簡單的東西,這個功能完成了這項工作。 它不依賴於數字鍵。 並將從上到下翻轉簡單的對象。 我不懂復雜的對象,所以我不知道它是多么“強大”。
function flipObject(obj){
var arr = [];
$.each(obj, function(key, val){
var temp = new Object;
temp['key'] = key;
temp['val'] = val;
arr.push(temp);
delete temp;
delete obj[key];
});
arr.reverse();
$.each(arr, function(key, val){
obj[val['key']] = val['val'];
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.