首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于regex匹配对json数组进行排序

基于regex匹配对json数组进行排序
EN

Stack Overflow用户
提问于 2022-10-25 11:30:15
回答 2查看 49关注 0票数 0

我有一个名为“sort_based_on_this_order附件”的json数组,在这里我需要基于数组进行排序。

代码语言:javascript
复制
var sort_based_on_this_order = ['1666432801510', '1666434048280', '1666433926644', '1666434169913', '1666433101760', '1666434194815', '1666432849037', '1666432764144', '1666432044571', '1666432742444']

sort_based_on_this_order数组包含附件json数组的文件名键值。

代码语言:javascript
复制
var attachments = [
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978911/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666433926644.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978911
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978910/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666434169913.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978910
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978909/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666434048280.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978909
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978907/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666433101760.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978907
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978905/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666434194815.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978905
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978904/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666432849037.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978904
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978903/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666432801510.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978903
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978902/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666432764144.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978902
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978901/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666432044571.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978901
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978900/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666432742444.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978900
                }
            ]

我试过了

代码语言:javascript
复制
attachments.sort.forEach(zz => {
                return zz["filename"].match(/\b[0-9]{13}(?=\.[^.]+$)/)
            })
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-10-25 11:42:56

您可以使用以下代码对其进行排序

代码语言:javascript
复制
attachments.sort((a,b) =>{
   let k1 = a.filename.match(/\b[0-9]{13}(?=\.[^.]+$)/)
   let k2 = b.filename.match(/\b[0-9]{13}(?=\.[^.]+$)/)
   let i1 = sort_based_on_this_order.indexOf(k1[0])
   let i2 = sort_based_on_this_order.indexOf(k2[0])
   return i1 > i2 ? 1:-1
})

代码语言:javascript
复制
var attachments = [
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978911/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666433926644.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978911
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978910/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666434169913.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978910
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978909/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666434048280.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978909
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978907/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666433101760.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978907
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978905/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666434194815.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978905
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978904/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666432849037.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978904
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978903/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666432801510.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978903
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978902/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666432764144.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978902
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978901/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666432044571.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978901
                },
                {
                   
                    "download_small_url": "https://kf.kobotoolbox.org/api/v2/assets/ajDWYWQoe9Gw6WAnK8H4fG/data/194338021/attachments/82978900/",
                    "mimetype": "image/jpeg",
                    "filename": "deploymentsmaster/attachments/a46854ceb37c4e55b4a2c5ea565c4ebf/04ac3197-7d0f-4301-bbaf-68daaee2b1a8/1666432742444.jpg",
                    "instance": 194338021,
                    "xform": 740320,
                    "id": 82978900
                }
            ]
var sort_based_on_this_order = ['1666432801510', '1666434048280', '1666433926644', '1666434169913', '1666433101760', '1666434194815', '1666432849037', '1666432764144', '1666432044571', '1666432742444']     
     
attachments.sort((a,b) =>{
   let k1 = a.filename.match(/\b[0-9]{13}(?=\.[^.]+$)/)
   let k2 = b.filename.match(/\b[0-9]{13}(?=\.[^.]+$)/)
   let i1 = sort_based_on_this_order.indexOf(k1[0])
   let i2 = sort_based_on_this_order.indexOf(k2[0])
   return i1 > i2 ? 1:-1
})

console.log(attachments)

票数 1
EN

Stack Overflow用户

发布于 2022-10-25 11:39:17

如果我正确理解,您希望根据attachments数组对sort_based_on_this_order数组进行排序(但是,我没有看到两个数组中的值匹配,所以也许您尝试了其他我无法理解的东西?)

通过对排序中的其他数组使用indexOf,可以根据其他数组进行排序。

代码语言:javascript
复制
attachments.sort((a, b) => {  
  return sort_based_on_this_order.indexOf(a.fileName) - sort_based_on_this_order .indexOf(b.fileName);
});
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74193382

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档