You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:55:23