【问题标题】:Sequential array issue顺序数组问题
【发布时间】:2013-12-08 15:06:15
【问题描述】:

后端代码 - PHP 前端 - Angular/JavaScript

我正在尝试在我的网站上进行优先搜索 - 我有一些用户被映射到朋友,每个用户都可以发布某些可以“喜欢”的内容,我的搜索想法是计算有多少用户朋友们在网站上“喜欢”了资源,并将它们从高到低排序。我有这个工作的主要部分(后台代码)并让它返回一个看起来像这样的对象:

{"results":
    "post":
        {"9":   {"message" : "blah9"}
        , 
        "1":    {"message" : "blah"}}
}

数字是帖子的 id - 只是一个旁注,我用它来刷新网站上其他地方的东西,我的问题是,当我 console.log();这在屏幕上变为:

{"results":
    "post":
        {"1":   {"message" : "blah"},
        "9":    {"message" : "blah9"}}
}

这使得排序代码有点无用,无论如何我可以阻止这种情况发生吗?

$http.post('php/router.php', {'request' : 'search', 'page': 'Search', 'searchString': searchString}).success(function(data) {
            console.log(data.results.post);
        });

【问题讨论】:

  • 对象(不是数组)中的属性没有定义的顺序。如果您想要定义的顺序,请使用数组。
  • 添加一个liked属性并且可以使用角度orderBy: liked

标签: javascript php angularjs


【解决方案1】:

让 Javascript 方面的事情进行排序,并从您的 PHP 中完全删除排序。只需让 PHP 对集合进行分页(1 到 10、11 到 20 等),Javascript 就可以为您排序结果(我之前的示例中的 10 块)。

如果您有大量的结果要分块,那么您可能仍然会在 PHP 端进行某种排序,但 JS 肯定可以对发送到客户端的每个分块进行排序。

【讨论】:

    猜你喜欢
    • 2016-07-30
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多