【问题标题】:sorting array of objects in node.js在 node.js 中对对象数组进行排序
【发布时间】:2014-02-22 16:38:11
【问题描述】:
exports.getFbFriendsFromFbIdAndFbAccessTokenTest=function(id,token){

    var request = require('request');
    var urls = "https://graph.facebook.com/" + id + "/friends?access_token=" + token;

    request(urls, function(error, response, body) {
        if (!error && response.statusCode == 200) {
            var output = JSON.parse(body);          
            output.sort(function(a,b){
                if (a.name > b.name)
                  return 1;
                if (a.name < b.name)
                  return -1;
                  // a must be equal to b
                return 0;
             });                

            console.log(output);            
        }           
    });

}

我想按升序对 facebook 好友列表进行排序。目前我在控制台中得到以下结果:

`{ data: `

[ { name: 'xxx', id: '547dsad1' }, { name: 'xxx', id: '55324iii' }, { name: 'xxx', id: '55yyy' }, ........... ........

但是它给出了对象输出没有属性排序的错误。 我也用过 Array.prototype:

Array.prototype.sortByProp = function(p){
return this.sort(function(a,b){
return (a[p] > b[p]) ? 1 : (a[p] < b[p]) ? -1 : 0;
});
}

output.sortByProp('name');

然后它显示对象输出没有属性sortByProp的相同错误。 有没有其他方法可以解决这个问题?

【问题讨论】:

  • 你确定output 100% 是一个数组而不是一个对象Array.isArray(obj)
  • 您是否尝试过将output = JSON.parse(body) 记录到控制台以查看您实际使用的内容?看起来您要“排序”的变量不是数组。 (编辑:看起来 dark_ruby 打败了我)

标签: arrays node.js sorting facebook-graph-api


【解决方案1】:

output 是一个对象,output.data 是一个数组

Array.prototype.sortByProp = function(p){
  return this.sort(function(a,b){
    return (a[p] > b[p]) ? 1 : (a[p] < b[p]) ? -1 : 0;
  });
};

console.log(output.data.sortByProp('name'));

【讨论】:

  • 它在控制台中没有给出任何结果。
  • 它不会,要将结果输入console 你需要console.log 它,我更新了我的答案
  • TypeError: Object [object Object],[object Object].....[object Object],[object Object],[object Object],[object Object] 没有方法 'sortByProp'
  • 您能否在您尝试运行sortByPropon 的对象上运行Array.isArray,以确保它是一个数组?
  • 它返回 false。
猜你喜欢
  • 2021-04-04
  • 1970-01-01
  • 2019-06-19
  • 2011-08-18
  • 2021-11-18
相关资源
最近更新 更多