【发布时间】:2018-08-26 13:31:13
【问题描述】:
我正在尝试按每个对象上存在的名称属性对对象数组进行排序。当使用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)};
这就是奇怪的地方......
当我跑步时:
myArray.sort( (a, b) => {
console.log(a.name);
console.log(b.name);
它完美地记录了名称。我错过了什么??
只是为了彻底了解一点上下文:
我在从角度 service.ts 文件进行 HTTP 调用后使用此方法,并且此数组正在传递给我的组件并被订阅。我正在使用 Angular,所以这将是 Typescript 编译为 JavaScript。我的sort() 方法下方还有另一个myArray.forEach() 方法,它正在工作。
【问题讨论】:
-
请同时添加数组。
-
减法运算符不适用于字符串值;您希望该表达式做什么?
-
在我看来不像是有效的打字稿语法。
-
有这么多
||运算符,您最好在整个过程中添加括号,但实际上,您可能希望回到使用更容易调试 的旧的-时尚if .. else -
请添加minimal, complete and verifiable example 以显示实际问题。
标签: javascript arrays angular typescript methods