Как преобразовать ключи объекта в верхний регистр

#javascript #typescript #object #ecmascript-6

#javascript #машинописный текст #объект #ecmascript-6

Вопрос:

Я хотел бы преобразовать строчную клавишу в прописную. Но поиск моей попытки не работает.

каков был бы правильный подход?

вот моя попытка:

 var obj = {
  name: "new name",
  age: 33
}

const x = Object.assign({}, obj);

for (const [key, value] of Object.entries(x)) {
  key = key.toUpperCase();
}


console.log(x);  

Живая демонстрация

Ответ №1:

С помощью

 key = key.toUpperCase();
  

Переназначение переменной почти никогда ничего не сделает само по себе (даже если key можно было переназначить) — вам нужно явно изменить существующий объект:

 var obj = {
  name: "new name",
  age: 33
}

const x = {};

for (const [key, value] of Object.entries(obj)) {
  x[key.toUpperCase()] = value;
}
console.log(x);  

Вы также могли бы использовать reduce , чтобы избежать внешней мутации x :

 var obj = {
  name: "new name",
  age: 33
}

const x = Object.entries(obj).reduce((a, [key, value]) => {
  a[key.toUpperCase()] = value;
  return a;
}, {});
console.log(x);  

Комментарии:

1. Как насчет массива объектов, подобных : var obj = [{ name:"new name", age:33 }, { name:"new ccc", age:34 }]

2. Используйте .map , и пусть функция mapper принимает элемент, который повторяется, как obj , и возвращает x