在Javascript中对多维JSON对象进行排序

时间:2012-11-07 22:13:52

标签: javascript json sorting flickr

我试着在这里找到答案,但不断提出真正简单的例子,所以这里有:

我从Flickr的API中提取了一个photoset列表,它需要在javascript中。无论如何,他们的反应与大多数其他人的反应不同,它们将值放在子对象中,如下所示:

"photoset":[
    {..."photos":"15", "videos":0, "title":{"_content":"Shocktoberfest 2012"}, "description":{"_content":""}, "needs_interstitial":0, "visibility_can_see_set":1, "count_views":"0", "count_comments":"0", "can_comment":0, "date_create":"1351829136", "date_update":"1351829309"}
    ...
    ...
    ...
]

当值在子对象中时,如何对标题进行排序?

3 个答案:

答案 0 :(得分:4)

您可以提供Array.sort的回调并返回通常的-1,0,1进行排序:

some_response.photoset.sort(function(a, b){ 
    return a.title._content.localeCompare(b.title._content); 
});

答案 1 :(得分:0)

不确定,但是,我会用for / in语句循环开始弄明白......

var photoObjects= {};
for(k in initialObject){
    photoObjects[k] = initalObject.photoset[0][k];
    console.log(photoObjecs[k]);
}

答案 2 :(得分:0)

Javascript允许您将函数作为参数传递给Arrays排序函数

你可以写一个简单的辅助函数来在标题

之后用对象对数组进行排序
var arr = [
  {title:"A"},
  {title:"F"},
  {title:"B"}
];



function sortarr (arr,item) {
  arr.sort(function (a,b) {
    if (typeof a == "object" && typeof b == "object" ) {
      console.log(a[item]);
      if ( a[item] < b[item] )
        return -1;
      if ( a[item] > b[item] )
        return 1;
      return 0;
    }
  });
return arr;
}

console.log(JSON.stringify(sortarr(arr,"title")));

以下是jsbin

的示例