0

我有一个具有以下格式的 JSON 对象:

{
    items:{
        nestedObj:{
            position:3
        },
        nestedObj2:{
            position:1
        },
        nestedObj3:{
            position:2,
            items:{
                dblNestedObj:{
                    position:2
                },
                dblNestedObj2:{
                    position:3
                },
                dblNestedObj3:{
                    position:1
                }
            }
        }
    }
}

我正在尝试按其位置属性对嵌套对象的每一级进行排序。我可以递归地迭代对象,但我不知道从哪里开始对它进行排序......

4

1 回答 1

1

sort不幸的是,使用该方法并不像如果你有一个数组那么容易。所以让我们构建一个数组:

var tmp = [], x;
for( x in obj.items) { // assuming your main object is called obj
    tmp.push([x,obj.items[x].position]);
    // here we add a pair to the array, holding the key and the value
}

// now we can use sort()
tmp.sort(function(a,b) {return a[1]-b[1];}); // sort by the value

// and now apply the sort order to the object
var neworder = {}, l = tmp.length, i;
for( i=0; i<l; i++) neworder[tmp[i][0]] = obj.items[tmp[i][0]];
obj.items = neworder;
于 2012-04-27T22:42:16.537 回答