1

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

我正在从 Flickr 的 API 中提取照片集列表,它需要在 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"}
    ...
    ...
    ...
]

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

4

3 回答 3

4

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

some_response.photoset.sort(function(a, b){ 
    return a.title._content.localeCompare(b.title._content); 
});
于 2012-11-07T22:16:57.163 回答
0

也不确定,但是,我会开始用 for/in 语句循环来解决这个问题......

var photoObjects= {};
for(k in initialObject){
    photoObjects[k] = initalObject.photoset[0][k];
    console.log(photoObjecs[k]);
}
于 2012-11-07T22:29:21.847 回答
0

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

您可以只编写一个简单的辅助函数来在标题之后对带有对象的数组进行排序

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的例子

于 2012-11-07T22:32:21.140 回答