javascript - 对象数组的排序不适用于 Array.sort() 方法

标签 javascript arrays angular typescript methods

我正在尝试通过存在于每个对象上的名称属性对对象数组进行排序。当使用 sort() 方法和下面的代码时,我收到以下错误:

错误 ReferenceError: b 未定义

这是我的代码:

myArray.sort( (a, b) => {
return (typeof a.name: string === 'string') - (typeof b.name === 'string')|| a.name - b.name || a.name.localeCompare(b.name)};

奇怪的是...

当我运行时:

myArray.sort( (a, b) => {
console.log(a.name);
console.log(b.name);

它完美地记录了名字。我错过了什么??

只是为了提供一点完整的背景信息:

我在从 angular service.ts 文件执行 HTTP 调用后使用此方法,并且此数组正在传递到我的组件并被订阅。我正在使用 Angular,所以这将是 Typescript 编译成 JavaScript。我还有另一个 myArray.forEach() 方法,就在我的 sort() 方法下面,它正在工作。

最佳答案

这是你想要的吗?

var a = [
  { name: "John" },
  { name: "Jack" },
  { name: "Bob" }
];

a.sort(function (a, b) {
  if (a.name > b.name) return 1;
  if (a.name < b.name) return -1;
  return 0;
});

console.log(a);

关于javascript - 对象数组的排序不适用于 Array.sort() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49338405/

相关文章:

javascript - 在 AngularJs 的 UI.Bootstrap tab-heading 指令中使用 X-editable

javascript - 所有图片加载完毕后执行代码

javascript - jsp-如何在 JavaScript 函数中复制 URL?

arrays - 如何使用 LISP 制作零点矩阵并将特定项目设置为一个

angular - 带有 ngrx/effects 的无限循环

Angular 4 + SASS 路径映射

javascript - 如何运行窗口调整大小功能?

c++ - 将静态成员数组初始化为零

arrays - R:根据选择器减少数组

angular - 如何在 typescript 中导入 Markdown (.md)文件