javascript - 如何使用 Jquery 对数组进行排序
问题描述
我有一个数组,其中包括孩子。孩子们,我已经成功地对数组进行了排序,但无法对其进行排序。
使用下面的代码,我可以对外部邮件数组元素进行排序,但不能对其子元素进行排序。
https://jsfiddle.net/eokd5uzj/
var arry = [{
'id': 301,
'name': '2 Foo',
'open': 'open',
'children': [{
'id': 1313,
'name': '2.1 Foo ',
'open': 'open'
},
{
'id': 1143,
'name': '2.3 Foo ',
'open': 'open'
},
{
'id': 1132,
'name': '2.2 Foo ',
'open': 'open'
},
],
},
{
'id': 30,
'name': '1 Foo',
'open': 'open',
'children': [{
'id': 1134,
'name': '1.1 Foo ',
'open': 'open'
},
{
'id': 1130,
'name': '1.3 Foo ',
'open': 'open'
},
{
'id': 1123,
'name': '1.2 Foo ',
'open': 'open'
},
],
},
];
function SortByName(a, b) {
var aName = a.name.toLowerCase();
var bName = b.name.toLowerCase();
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>
<p id='data'>
</p>
解决方案
您还需要迭代数组以对所有子项进行排序。不需要赋值,因为Array#sort
会改变数组。
array.forEach(({ children }) => children.sort(sortByName));
推荐阅读
- python - 抓取可点击的链接或 xpath
- nuxtjs - nuxtjs 中间件 REST API 原始数据请求
- go - golang http客户端空闲与https
- python - 我可以用 BeautifulSoup 刮下一页吗?
- javascript - 地方
在中间和左端 - css - h3 s 与同一行之间有空格
- javascript - Angular:使用依赖注入手动实例化类
- arrays - 为什么我会看到这种奇怪的行为?
- c# - 有没有办法将四个 switchLane 功能变成一个功能并随机选择切换到哪个通道?
- typescript - 如何强类型 electron.remote.require() 结果