1 回答
TA贡献1836条经验 获得超13个赞
在比较之前,您需要使用正则表达式来消除点。
var arry = [
{
'name': '2.1 Foo',
'children': [{
'name': '2.1.1 Foo ',
},
{
'name': '2.1.3 Foo ',
},
{
'name': '2.1.10 Foo ',
},
{
'name': '2.1.2 Foo ',
},
],
},
{
'name': '1.1 Foo',
'children': [{
'name': '1.1.2 Foo ',
},
],
},
];
function SortByName(a, b){
if(a.children){
a.children = a.children.sort(SortByName)
}
if(b.children){
b.children = b.children.sort(SortByName)
}
var aName = parseInt( a.name.toLowerCase().replace(/\./g, "") );
var bName = parseInt( b.name.toLowerCase().replace(/\./g, "") );
return ((aName < bName) ? -1 : ((aName > bName) ? 1 : 0));
}
$(document).ready(function() {
var sorted_array = arry.sort(SortByName)
console.log(sorted_array)
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
添加回答
举报