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日

悬赏问题

  • ¥15 请问有会的吗,用MATLAB做
  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 ARIMA模型时间序列预测用pathon解决
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序,怎么查看客户esp32板子上程序及烧录地址
  • ¥50 html2canvas超出滚动条不显示