我想在Angular中对数组进行排序,例如0,00,000、0000、01、02上下的订单



我的数组如下,我想在Angular JS

中组织此数组的排序顺序

[{ ID:0 },{ ID:000 },{ ID:00 },{ ID:0000 },{ ID:01 },{ ID:03 }]

预期排序类似于0> 00> 000> 0000,以上到底部的顺序

[{ ID:0 },{ ID:00 },{ ID:000 },{ ID:0000 },{ ID:01 },{ ID:03 }]

这不是一个角度问题,它是带有两个部分的JavaScript或打字稿问题。真正的问题是如何对数组进行排序,将值视为字符串的引导零。

甚至在必须将它们编码为字符串的值中具有的引导零。因此,该字符串不会如您期望的那样解析。因此,JSON对语法非常棘手,您必须也引用属性名称,因此您的示例根本不会解析。

JSON.parse("[{ 'id' :0 },{ 'id':000 },{ 'id' :00 },{ 'id':0000 },{ 'id':01 },{ 'id':03 }]") 

将(如果它完全解析)产生这种对象数组:

[ { id: 0 }, { id: 0 }, { id: 0 }, { id: 0 }, { id: 1 }, { id: 3 } ]

要按照您想要的方式工作以确保引用值。

JSON.parse("[{ 'id' :'0' },{ 'id':'000' },{ 'id' :'00' },{ 'id':'0000' },{ 'id':'01' },{ 'id':'03' }]") 

将把值解析为字符串文字,并保留您的领先零。如果没有引用这些值,那么您就被搞砸了,唯一可以使此工作的方法就是写自己的非常不可估计的解析,我怀疑这远远超出了您当前的技能。

如果是是引用,这些值已经是字符串,您只需要在ID字段上排序即可。在这种情况下,您需要知道的一切都记录在https://developer.mozilla.org/en-us/docs/web/javascript/reference/reference/global_objects/array/array/aray/sort

这里是您的情况,我们想对特定成员进行排序。

var foo = JSON.parse("[{ 'id' :'0' },{ 'id':'000' },{ 'id' :'00' },{ 'id':'0000' },{ 'id':'01' },{ 'id':'03' }]");
foo.sort(function(a,b){ return a.id < b.id ? -1 : a.id === b.id ? 0 : 1; });

最新更新