JavaScript中对已排序主数组的子数组items按字母顺序排序
解决方案:给子数组items按字母顺序排序
没问题!你已经搞定了主数组按name字段的字母排序,现在要给每个对象里的items子数组按car字段的字母顺序排序,只需要在现有代码基础上添加一段遍历排序的逻辑就可以了。
完整代码示例
// 你的原有数据和主数组排序代码 var myObj = [ { "name":"John", "items": [ { "id":1, "car":"maruti" }, { "id":2, "car":"wolks" }, { "id":3, "car":"bmw" } ] }, { "name":"Peter", "items": [ { "id":4, "car":"alto" }, { "id":5, "car":"swift" } ] } ]; myObj.sort(function(a, b) { var nameA = a.name.toLowerCase(), nameB = b.name.toLowerCase(); if (nameA < nameB) { return -1 } if (nameA > nameB) { return 1 } return 0 }); // 新增:遍历每个对象,对items数组按car字母排序 myObj.forEach(function(obj) { obj.items.sort(function(x, y) { // 转成小写避免大小写影响排序结果 var carX = x.car.toLowerCase(), carY = y.car.toLowerCase(); if (carX < carY) { return -1 } if (carX > carY) { return 1 } return 0 }); });
代码解释
- 第一部分是你已经实现的主数组排序逻辑:通过把
name转成小写后比较,确保排序不受大小写影响。 - 第二部分用
forEach遍历myObj中的每个对象,对每个对象的items数组调用sort方法。排序逻辑和主数组类似,只是比较的是car字段的小写形式,这样不管car的值是大写还是小写,都能正确按字母顺序排列。
执行这段代码后,myObj的结构会变成:
[ { "name": "John", "items": [ {"id":3, "car":"bmw"}, {"id":1, "car":"maruti"}, {"id":2, "car":"wolks"} ] }, { "name": "Peter", "items": [ {"id":4, "car":"alto"}, {"id":5, "car":"swift"} ] } ]
内容的提问来源于stack exchange,提问作者Jomol MJ
相关产品推荐
相关产品推荐

