Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 打字稿排序错误_Typescript_Sorting - Fatal编程技术网

Typescript 打字稿排序错误

Typescript 打字稿排序错误,typescript,sorting,Typescript,Sorting,我有一个数组: let a = [{id: "-1", name: "a"}, { id: "0", name: "b" }, { id: "1", name: "c" }] 我做了以下工作: a = a.sort(x => <number>x.id); a=a.sort(x=>x.id); 但由于某些原因,我在最后一个位置有一个带有id=“0”的项目。它的原因是什么?我如何修复它 我还试图更改数组中的id=“0”->id=“-2”,但现在如果我再次排序,我会看到以下顺序

我有一个数组:

let a = [{id: "-1", name: "a"}, { id: "0", name: "b" }, { id: "1", name: "c" }]
我做了以下工作:

a = a.sort(x => <number>x.id);
a=a.sort(x=>x.id);
但由于某些原因,我在最后一个位置有一个带有
id=“0”
的项目。它的原因是什么?我如何修复它

我还试图更改数组中的
id=“0”
->
id=“-2”
,但现在如果我再次排序,我会看到以下顺序:
-1,-2,1
。怎么了


将一种类型转换为另一种类型可能有错误?我的意思是
string
to
number

类型脚本不是一种运行时语言,它编译成JS。执行TS强制转换只会指示TS编译器将x.id处理为一个
number
它不会执行运行时强制转换

您想要做的是对数字进行JS转换,例如
number(x.id)

此外,要正确排序,您需要比较两个项目:

a.sort((x, y) => Number(x.id) - Number(y.id))

Typescript不是运行时语言,它编译为JS。执行TS强制转换只会指示TS编译器将x.id处理为一个
number
它不会执行运行时强制转换

您想要做的是对数字进行JS转换,例如
number(x.id)

此外,要正确排序,您需要比较两个项目:

a.sort((x, y) => Number(x.id) - Number(y.id))
试试这个

a.sort((a, b) => { if (a.id < b.id) return -1; else if (a.id > b.id) return 1; else return 0; });
a.sort((a,b)=>{if(a.idb.id)返回1;else返回0;});
试试这个

a.sort((a, b) => { if (a.id < b.id) return -1; else if (a.id > b.id) return 1; else return 0; });
a.sort((a,b)=>{if(a.idb.id)返回1;else返回0;});

排序回调应该具有签名
函数(a,b):int
。如果您试图按
id
字段对项目进行数字排序,请尝试类似
a.sort((a,b)=>Number(a.id)-Number(b.id))
的方法。这是否回答了您的问题?排序回调应该具有签名
函数(a,b):int
。如果您试图按
id
字段对项目进行数字排序,请尝试类似
a.sort((a,b)=>Number(a.id)-Number(b.id))
的方法。这是否回答了您的问题?