我正在尝试通过存在于每个对象上的名称属性对对象数组进行排序。当使用 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/