javascript - 按属性对 JavaScript 对象排序

标签 javascript json arrow-functions

我正在尝试按“正文”属性对一组评论对象进行排序。

我正在尝试运行以下命令(console.log(comment) 成功显示数组)但是当我对它进行排序时,我只是得到相同的数组 - 即使在将其定义为 sortedArray 变量。

我见过一些类似的问题,但与我尝试实现的箭头函数语法不太一样。

下面是我的代码:

function sortComments() {
  $("#sort_comments").on("click", function(e) {
    e.preventDefault();
    var id = this.dataset.linkid
    fetch(`/links/${id}/comments.json`)
      .then(r => r.json())
      .then(comments =>
        comments.sort(function(a, b) {
          return a.body - b.body;
        })
      );
  });
}

感谢您的帮助。

最佳答案

这里可能发生的是 body 属性是一个字符串而不是一个数字,因此该减法的结果返回 NaN,如果是这种情况,顺序Array 不会改变。

为了比较 2 个不同的字符串,您可能需要使用 localeCompare,如下所示:

function sortComments() {
    $("#sort_comments").on("click", function (e) {
        e.preventDefault();
        var id = this.dataset.linkid
        fetch(`/links/${id}/comments.json`)
          .then(r => r.json())
          .then(comments => 
             comments.sort(({body: a}, {body: b}) => a.localeCompare(b))
          );
    };
}

关于javascript - 按属性对 JavaScript 对象排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54430845/

相关文章:

javascript - react : Rendering a method defined inside arrow function?

javascript - 在 typescript 或 javascript 中链接箭头函数

javascript - 如何正确序列化 Javascript curry 箭头函数?

javascript - JSColor onChange 事件说函数未定义

javascript - 为什么 TypeScript 无法在编译时检测到不匹配的类型以及如何修复它?

php - 使用来自 JavaScript 数据库的 php 变量?

json - 从键值对中提取 "filtering"JSON 对象的最有效方法是什么?

javascript - 带有 sails.js 的应用程序无缓存浏览器

javascript - jquery - 从平面 json 创建嵌套 json

javascript - 使用带有 javascript 的 hashmap 计算重复的 JSON 数组值