首页 > 解决方案 > 如何在javascript中对嵌套的JSON数组进行排序

问题描述

我想根据键对下面的嵌套数据进行排序,我有使用.sort功能但不能使用嵌套数据,即:sortFunction(data,'poolTimeRemain','desc'),请帮助

更新 JSON 数据。

let data = [{ "rows": [{ "poolTimeRemain": "520 hours", "industry": "Business & Professional Services", }, { "poolTimeRemain": "503 hours", "industry": "Business &专业服务" } ], "button": { "rowspan": 2, "engIds": "a2P3B000000BCOPUA4,a2P3B000000BCQ6UAO" } }, { "rows": [{ "poolTimeRemain": "420 hours", "industry": "商业和专业服务”,},{“poolTimeRemain”:“450小时”,“行业”:“商业和专业服务”}],“按钮”:{“rowspan”:2,“engIds”:“a2P3B000000BCOPUA4,a2P3B000000BCQ6UAO " } }, { "行": [{ "poolTimeRemain":“600 小时”,“行业”:“商业和专业服务”,}],“按钮”:{“rowspan”:2,“engIds”:“a2P3B000000BCOPUA4,a2P3B000000BCQ6UAO”}}]

标签: javascriptsorting

解决方案


您只需要像平常一样访问rows和使用.sort

  let data = [{
    "rows": [{
        "title": null,
        "role": null,
        "relationShip": "Reseller",
        "productFamily": "Google Workspace",
        "poolTimeRemain": "-520 hours",
        "industry": "Business & Professional Services",
        "engId": "a2P3B000000BCOPUA4",
        "country": null,
        "annualRevenue": null,
        "accountId": "0013B00000foEbOQAU"
    }, {
        "title": null,
        "role": null,
        "relationShip": "Reseller",
        "productFamily": "Google Workspace",
        "poolTimeRemain": "-503 hours",
        "industry": "Business & Professional Services",
        "engId": "a2P3B000000BCQ6UAO",
        "country": null,
        "annualRevenue": null,
        "accountId": "0013B00000foEbOQAU",
        "cssclass": "removeTopBorder"
    }],
    "button": {
        "rowspan": 2,
        "engIds": "a2P3B000000BCOPUA4,a2P3B000000BCQ6UAO"
    }
}]

function sortFunction(input, label, dir) {
  if (dir == "asc")
    return input[0]["rows"].sort((a,b) => (a[label] > b[label]) ? 1 : ((b[label] > a[label]) ? -1 : 0))
  else if (dir == "desc")
    return input[0]["rows"].sort((a,b) => (a[label] < b[label]) ? 1 : ((b[label] < a[label]) ? -1 : 0))
} 

console.log(sortFunction(data, "poolTimeRemain", "desc"))


推荐阅读