我试图通过每个对象上存在的name属性对对象数组进行排序。当使用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)};
这是我的代码:
myArray.sort( (a, b) => {
console.log(a.name);
console.log(b.name);
这是奇怪的......
当我跑步时:
myArray.forEach()
它完全记录了这些名字。我错过了什么?
只需要深入了解一下背景:
我从角度service.ts文件执行HTTP调用后使用此方法,此数组正在传递给我的组件并订阅。我正在使用Angular,所以这将是编写JavaScript的Typescript。我的sort()
方法正下方还有另一个integral = scipy.integrate.tplquad(lambda z, y, x: int(Vector(x, y, z).dot(normal) < distance),
-0.5, 0.5,
lambda x: -0.5, lambda x: 0.5,
lambda x, y: -0.5, lambda x, y: 0.5,
epsabs=1e-5,
epsrel=1e-5)
方法,而且工作正常。
答案 0 :(得分:4)
这是你想要的吗?
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);
答案 1 :(得分:0)
您可以使用一种独立于字符串或数字类型的比较,方法是将数值移到顶部。
var array = [{ name: 20 }, { name: 21 }, { name: 2 }, { name: 11 }, { name: 1 }, { name: 'John' }, { name: 'Jane' }, { name: 'Frank' }, { name: 'Mary' },]
array.sort((a, b) => (typeof a.name === 'string') - (typeof b.name === 'string') || a.name > b.name || -(a.name < b.name));
console.log(array);
&#13;