marlsun 2022-07-04 12:47 采纳率: 84.2%
浏览 85
已结题

根据属性名的特定字符过滤对象数组

有一对象数组arr,如下:

const arr = [
      {
        Chr: "chr",
        Num: 3,
        Kh: "h",

        Fn_A: "a",
        Fn_B: "b",
        Fn_C: "c",
        Fn_D: "d",

        Ini_A: "a",
        Ini_B: "b",
        Ini_C: "c",
        Ini_D: "d",

        Syl_A: "a",
        Syl_B: "b",
        Syl_C: "c",
        Syl_D: "d",
      },
    ];

想实现根据属性名所含特定字符('Fn', 'Ini','Syl'), 过滤出三个子数组(arrFn, arrIni, arrSyl), 'Chr, Num, Kh"则是每个子数组中都共有的,如:

const arrFn = [
     {
        Chr: "chr",
        Num: 3,
        Kh: "h",

        Fn_A: "a",
        Fn_B: "b",
        Fn_C: "c",
        Fn_D: "d"
   }
]

  • 写回答

5条回答 默认 最新

  • 林一怂儿 前端领域新星创作者 2022-07-04 13:25
    关注

    不知道你说的是不是这种效果。

    img

    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Document</title>
    </head>
    
    <body>
        <script>
            const arr = [
                {
                    Chr: "chr",
                    Num: 1,
                    Kh: "h",
                    Fn_A: "a",
                    Fn_B: "b",
                    Fn_C: "c",
                    Fn_D: "d",
                    Ini_A: "a",
                    Ini_B: "b",
                    Ini_C: "c",
                    Ini_D: "d",
                    Syl_A: "a",
                    Syl_B: "b",
                    Syl_C: "c",
                    Syl_D: "d",
                },
                {
                    Chr: "chr",
                    Num: 2,
                    Kh: "h",
                    Fn_A: "a",
                    Fn_B: "b",
                    Fn_C: "c",
                    Fn_D: "d",
                    Ini_A: "a",
                    Ini_B: "b",
                    Ini_C: "c",
                    Ini_D: "d",
                    Syl_A: "a",
                    Syl_B: "b",
                    Syl_C: "c",
                    Syl_D: "d",
                },
                {
                    Chr: "chr",
                    Num: 3,
                    Kh: "h",
                    Fn_A: "a",
                    Fn_B: "b",
                    Fn_C: "c",
                    Fn_D: "d",
                    Ini_A: "a",
                    Ini_B: "b",
                    Ini_C: "c",
                    Ini_D: "d",
                    Syl_A: "a",
                    Syl_B: "b",
                    Syl_C: "c",
                    Syl_D: "d",
                },
                {
                    Chr: "chr",
                    Num: 4,
                    Kh: "h",
                    Fn_A: "a",
                    Fn_B: "b",
                    Fn_C: "c",
                    Fn_D: "d",
                    Ini_A: "a",
                    Ini_B: "b",
                    Ini_C: "c",
                    Ini_D: "d",
                    Syl_A: "a",
                    Syl_B: "b",
                    Syl_C: "c",
                    Syl_D: "d",
                },
                {
                    Chr: "chr",
                    Num: 5,
                    Kh: "h",
                    Fn_A: "a",
                    Fn_B: "b",
                    Fn_C: "c",
                    Fn_D: "d",
                    Ini_A: "a",
                    Ini_B: "b",
                    Ini_C: "c",
                    Ini_D: "d",
                    Syl_A: "a",
                    Syl_B: "b",
                    Syl_C: "c",
                    Syl_D: "d",
                },
            ];
            let arrFn = [];
            let arrIni = [];
            let arrSyl = []
            let commonKeys = ['Chr', 'Num', 'Kh']
    
            function filterChildHasKeys(arr, commonKeys, containKey) {
                let res = [];
                for (const item of arr) {
                    let resItem = {};
                    for (const key in item) {
                        if (commonKeys.includes(key) || key.includes(containKey)) resItem[key] = item[key]
                    }
                    res.push(resItem)
                }
                return res
            }
    
            arrFn = filterChildHasKeys(arr, commonKeys, 'Fn')
            arrIni = filterChildHasKeys(arr, commonKeys, 'Ini')
            arrSyl = filterChildHasKeys(arr, commonKeys, 'Syl')
    
            console.log(arrFn);
            console.log(arrIni);
            console.log(arrSyl);
    
        </script>
    </body>
    
    </html>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月4日
  • 已采纳回答 7月4日
  • 修改了问题 7月4日
  • 创建了问题 7月4日

悬赏问题

  • ¥50 求恶意流量检测系统搭建教程( C++ python C)
  • ¥15 mmseqs内存报错
  • ¥15 vika文档如何与obsidian同步
  • ¥15 华为手机相册里面的照片能够替换成自己想要的照片吗?
  • ¥15 陆空双模式无人机飞控设置
  • ¥15 sentaurus lithography
  • ¥100 求抖音ck号 或者提ck教程
  • ¥15 关于#linux#的问题:子进程1等待子进程A、B退出后退出(语言-c语言)
  • ¥20 web页面如何打开Outlook 365的全球离线通讯簿功能
  • ¥15 io.jsonwebtoken.security.Keys