Как отфильтровать объект и вернуть только значение ключа, если ключ в верхнем регистре - PullRequest
0 голосов
/ 26 апреля 2020

 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, но он возвращает ноль

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

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

как достать

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

Ответы [ 2 ]

2 голосов
/ 26 апреля 2020

Преобразование объекта в записи (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)
1 голос
/ 26 апреля 2020

Вы конвертируете ключ в верхний регистр, поэтому, сравнивая ключи, вы получаете что-то вроде этого: APP === App, но если вы хотите сравнить ключи только по первому символу заглавной буквы, вы можете сделать что-то вроде это:

let filtered = Object.keys(params )
      .filter(key => {
        let capitalizedKey = key.charAt(0).toUpperCase() + key.slice(1);
         return capitalizedKey === key
      });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...