Если вы после того, как автономный родовой функции, чтобы сделать это, достаточно просто издеваются что-то (кредит другие ответы здесь уже):
function rename_keys (obj_arr, key_map) {
return obj_arr.map(
(obj) => {
for (var key in key_map) {
obj[ key_map[ key ] ] = obj[ key ];
delete obj[ key ];
}
return obj;
}
);
}
Первый параметр - это массив объектов для изменения. Второй параметр - это объект, который определяет, какие ключи переименовать и к чему. Использование образца:
rename_keys(
[
{a:3,b:5}, {a:4,b:6}
],
{
b:'c'
}
);
// results in:
// [
// {a:3,c:5}, {a:4,c:6}
// ]
Примечание: это изменяет исходные объекты и возвращает новый массив из тех же объектов. Необходимо предпринять дополнительные шаги, если вы этого не хотите.
Примечание 2: в то время как в целом это не рекомендуется изменять основные объекты, если вы хотели вы могли сделать эту функцию членом любого массива:
Array.prototype.rename_keys = function (key_map) {
return rename_keys(this, key_map);
};
// then, this is possible:
userEvents.rename_keys({title: 'eventName'});
Я думал, что будет построен в функции, но это будет сделано. Спасибо –
@MoatezBouhdid Вы можете переименовать свойства за один проход, но только если они имеют один и тот же «прототип». Когда объекты определяются с использованием объектно-литеральной нотации Javascript (как в вашем примере), тогда нет наследования прототипов, поэтому для модификации объекта-конструктора или прототипа нет. – Dai
Почему downvote? Пожалуйста, не занимитесь, не по крайней мере предоставляя конструктивную обратную связь в комментарии. – Dai