JavaScript обрезать все собственные имена ключей свойств объекта? - PullRequest
0 голосов
/ 02 апреля 2020

Как обрезать все собственные ( не наследуемые ) ключи / имена свойств объекта? Чтобы обрезать имя ключа, а не значение свойства.

PS. Ближайший похожий вопрос, который я нашел, касается обрезки значений свойств : javascript: обрезать все свойства объекта

РЕДАКТИРОВАТЬ: Этот вопрос был предложен в качестве возможного дубликата. Однако мне явно нужно обрезать только имя ключа, а не значение : Обрезать пробелы как в ключе объекта, так и в значении рекурсивно

Ответы [ 2 ]

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

Насколько я понял, Object.keys() или Object.entries() должны делать эту работу.

const obj = { "a " : 1 , "   b " : 2 }

const trimmed = Object.entries(obj).reduce((acc,curr)=>{

  let [key,value] = curr
  acc[typeof key === "string"?key.trim():key] = value // checking if the key is a string
  return acc

},{})

console.log(trimmed) // -> { a: 1, b: 2 } notice the trimmed keys
0 голосов
/ 02 апреля 2020

Вы можете проверить, является ли ключ строкой (а не Symbol), обрезать это значение и получить новый объект с помощью Object.fromEntries

const
    obj = { "a " : 1 , "   b " : 2 },
    trimmed = Object.fromEntries(Object.entries(obj).map(([k, v]) => [
        typeof k === 'string' ? k.trim() : k,
        v
    ]));

console.log(trimmed);
...