【问题标题】:How to filter object and return only key value if key is uppercase如果键为大写,如何过滤对象并仅返回键值
【发布时间】:2020-04-26 17:49:13
【问题描述】:

 var params = {
  "rn": "AuditTrailLogon",
  "Dateange": "lastquarter",
  "App": "20000",
  "ts": "AuditTrailLogon"   
}
    
    
      let filtered = Object.keys(params)
       .filter(key => key.toUpperCase() === key);  

    console.log("filtered", filtered);

如何过滤对象并仅返回大写键的对象

var params = {
  "rn": "AuditTrailLogon",
  "Dateange": "lastquarter",
  "App": "20000",
  "ts": "AuditTrailLogon"   
}

尝试了 .filter 方法,但它返回 null

let filtered = Object.keys(params )
  .filter(key => key.toUpperCase() === key);

console.log("filtered", filtered);  returns null []

如何获得

{
   "Dateange": "lastquarter",
   "App": "20000",
}

【问题讨论】:

    标签: arrays ecmascript-6 filter


    【解决方案1】:

    将对象转换为条目(Object.entries()),过滤条目(我使用了正则表达式),然后使用Object.fromEntries() 转换回对象:

    const params = {
      "rn": "AuditTrailLogon",
      "Dateange": "lastquarter",
      "App": "20000",
      "ts": "AuditTrailLogon"
    }
    
    const uppercaseTest = /^[A-Z]/
    
    const result = Object.fromEntries(
      Object.entries(params)
        .filter(([key]) => uppercaseTest.test(key))
    )
    
    console.log(result)

    【讨论】:

      【解决方案2】:

      您正在将密钥转换为大写,因此当您比较密钥时,您会得到如下内容:APP === App,但如果您只想通过密钥的第一个字符大写来比较密钥,您可以执行类似的操作这个:

      let filtered = Object.keys(params )
            .filter(key => {
              let capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);
               return capitalizedKey === key
            });
      

      【讨论】:

      • 就是这样,我想,只是第一个字符大写
      猜你喜欢
      • 1970-01-01
      • 2021-05-21
      • 2022-01-06
      • 1970-01-01
      • 2021-05-04
      • 1970-01-01
      • 2022-07-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多