В этом решении используется String.prototype.replace()
, поэтому он может принимать String
с или RegExp
с в качестве источника и допускает подмену.Имейте в виду, что он не очень производительный, но использует только чистые функции:
const data = {
someKey: 1,
some0Key: 1,
some1Key: 1,
some2Key: 1,
some3Key: 1,
some4Key: 1,
some5Key: 1,
some6Key: 1,
some7Key: 1,
some8Key: 1,
some9Key: 1,
some10Key: 1,
some11Key: 1,
some12Key: 1,
some13Key: 1,
some14Key: 1,
some15Key: 1,
};
// simple equivalent of proposed Object.fromEntries()
const fromEntries = (entries) =>
entries.reduce((obj, [key, value]) => ({
[key]: value,
...obj
}), {});
const replaceObjectKeys = (obj, from, to) =>
fromEntries(
Object.entries(obj)
.map(([key, value]) => [key.replace(from, to), value]));
console.log(replaceObjectKeys(data, /Key$/, 'prop'));
fromEntries
можно легко переписать в более быструю реализацию за счет введения изменяемых переменных.