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

new*_*man 1 javascript arrays methods typescript angular

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

ERROR ReferenceError: b is not defined

这是我的代码:

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

奇怪的是……

当我运行时:

myArray.sort( (a, b) => {
console.log(a.name);
console.log(b.name);
Run Code Online (Sandbox Code Playgroud)

它记录的名字非常好。我错过了什么??

只是为了彻底了解一点上下文:

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

lea*_*eaf 13

这是你想要的吗 ?

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);
Run Code Online (Sandbox Code Playgroud)