#独家
把两个数组按照其中一个数组的顺序 进行排序?

2023-06-08 0 3,912

将oneArr 按照 twoArr 的顺序进行排序,而且两个数组可能一样长,也可能不一样长,
twoArr 是基于oneArr选中的数据,oneArr 是接口返回的数据,

oneArr = [
    {
        "intID": 4070479,
        "sourceTableMetaId": 225378,
        "strColumnNameEN": "id",
        "strColumnDescZHCN": "ID",
        "index": 0,
        "_index": 0
    },
    {
        "intID": 4070480,
        "sourceTableMetaId": 225378,
        "strColumnNameEN": "kpi_id",
        "strColumnDescZHCN": "",
        "index": 1,
        "_index": 1
    },
    {
        "intID": 4070481,
        "sourceTableMetaId": 225378,
        "strColumnNameEN": "kpi_code",
        "strColumnDescZHCN": "xxx",
        "index": 2,
        "_index": 2
    },
    {
        "intID": 4070482,
        "sourceTableMetaId": 225378,
        "strColumnNameEN": "project_code",
        "strColumnDescZHCN": "xxxxx",
        "index": 3,
        "_index": 3
    },
    {
        "intID": 4070481,
        "sourceTableMetaId": 225373,
        "strColumnNameEN": "key_code",
        "strColumnDescZHCN": "xxxxxxxxxx",
        "index": 4,
        "_index": 4
    }
]
twoArr = [
    {
        "intID": 4070479,
        "sourceTableMetaId": 225378,
        "strColumnNameEN": "id",
        "strColumnDescZHCN": "ID",
        "index": 0,
        "_index": 0
    },
    {
        "intID": 4070480,
        "sourceTableMetaId": 225378,
        "strColumnNameEN": "kpi_id",
        "strColumnDescZHCN": "",
        "index": 1,
        "_index": 1
    },
    {
        "intID": 4070482,
        "sourceTableMetaId": 225378,
        "strColumnNameEN": "project_code",
        "strColumnDescZHCN": "xxxxx",
        "index": 3,
        "_index": 3
    },
    {
        "intID": 4070481,
        "sourceTableMetaId": 225378,
        "strColumnNameEN": "kpi_code",
        "strColumnDescZHCN": "xxxxxxx",
        "index": 2,
        "_index": 2
    }
]
const cache = {};
oneArr.sort((a, b) => {
    const aId = a.intID, bId = b.intID;
    let aIndex = cache[aId] ?? -1;
    let bIndex = cache[bId] ?? -1;
    if (aIndex < 0 || bIndex < 0) {
        for (let i = 0; i < twoArr.length; ++i) {
            const id = twoArr[i].intID;
            if (aId === id) aIndex = cache[aId] = i;
            if (bId === id) bIndex = cache[bId] = i;
            if (aIndex >= 0 && bIndex >= 0) break;
        }
    }
    return aIndex - bIndex;
});
console.log(oneArr);
let order = new Map(twoArr.map((item, index) => [item.intID, index]));

oneArr.sort((a, b) => {
  let orderA = order.has(a.intID) ? order.get(a.intID) : Infinity;
  let orderB = order.has(b.intID) ? order.get(b.intID) : Infinity;
  return orderA - orderB;
});
收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

1. JK下载官网所有资源来源于开发团队,加入会员即可下载使用!如有问题请联系右下角在线客服!
2. JK下载官方保障所有软件都通过人工亲测,为每位会员用户提供安全可靠的应用软件、游戏资源下载及程序开发服务。
3. JK开发团队针对会员诉求,历经多年拥有现今开发成果, 每款应用程序上线前都经过人工测试无误后提供安装使用,只为会员提供安全原创的应用。
4. PC/移动端应用下载后如遇安装使用问题请联系右下角在线客服或提交工单,一对一指导解决疑难。

JK软件下载官网 技术分享 把两个数组按照其中一个数组的顺序 进行排序? https://www.jkxiazai.com/1792.html

JK软件应用商店是经过官方安全认证,保障正版软件平台

相关资源

官方客服团队

为您解决烦忧 - 24小时在线 专业服务