0

私はJSONのようなものを持っています

var MyJSON = {
  "item1" : "value1",
  "item2" : {
     "somedata": "somevalue",
      "entries":[ 
        {   
         "sortitem":"ABC",
        },
        {
         "sortitem":"PQR",    
       },
       {
        "sortitem":"XYZ",    
       }
      ]  
  }
  "item3" : {
     "somedata": "somevalue",
      "entries":[ 
        {   
         "sortitem":"abc",
        },
        {
         "sortitem":"pqr",    
       },
       {
        "sortitem":"xyz",    
       }
      ]  
  }

};

構造を変更せず、データを失うことなく、「sortitem」で MyJSON をソートする必要があります。

4

1 に答える 1

0

多分これは役立つでしょう、

(function (data, sField){
    function recurse (dt){
        for(prop in dt){
            if(Object.hasOwnProperty.call(dt, prop)){
                if(Object.prototype.toString.call(dt[prop]) === '[object Array]'){
                    dt[prop].sort(function(a, b){
                        if(!a[sField] || !b[sField]) return 0; 
                        return a[sField].localeCompare(b[sField]); 
                    });
                }
                else if(Object.prototype.toString.call(dt[prop]) === '[object Object]'){
                    recurse(dt[prop]);
                }
            }
        }
    }
    recurse(data);
})(MyJSON, 'sortitem'); //data and sortfield

お役に立てれば。

于 2013-10-24T07:59:03.770 に答える