【问题标题】:How to rename Object Key when you have been given the function in JS在 JS 中获得函数后如何重命名对象键
【发布时间】:2020-04-01 09:09:51
【问题描述】:

所以我在下面得到了一个问题......

function translateKey(student, keyToChange, translation) {  }

/*
This function will take an object representing a student's data, a key that needs changing, and its English translation.  
E.g. 
const student = {
  prénom: 'Carla',
  surname: 'Bruni',
  job: 'Artist'
}
const keyToChange = 'prénom'
const translation = 'firstName'

It returns a **new object** with the key successfully translated into English.
E.g. 
{
  firstName: 'Carla',
  surname: 'Bruni,
  job: 'Artist'
}
*/

我从...开始

function translateKey(student, keyToChange, translation) {

const translated = {keyToChange : translation};

const newObject = {};


// not really sure where to go from here, help please!

【问题讨论】:

  • 你想去吗?您计划了哪些步骤?
  • 我想返回一个带有翻译后的key的新对象

标签: javascript object return key rename


【解决方案1】:

由于您的 objectif 是重命名对象键,您可以开始查看 this question,他的答案非常好。
您可以以ChaosPandion 的答案为例,也许可以这样做:

function translateKey(student, keyToChange, translation) {
    var newObject = Object.assign({}, student);
    // Do nothing if the names are the same
    if (keyToChange === translation) {
        return newObject;
    }
    // Check for the old property name to avoid a ReferenceError in strict mode.
    if (newObject.hasOwnProperty(keyToChange)) {
        newObject[translation] = newObject[keyToChange];
        delete newObject[keyToChange];
    }
    return newObject;
}

如果这是您必须为课程做的练习,请阅读我链接的其他问题以查看其他方式并尝试正确理解解决方案,例如为什么检查hasOwnProperty 很重要或为什么我们使用===而不是简单的==

【讨论】:

  • 谢谢 BSO,但由于某种原因,我收到一个错误,因为我需要返回一个新对象... AssertionError: expected { Object (prénom, surname, ...) } to not equal { 对象(姓氏,姓氏,...)}
  • @newtojs 我编辑了我的答案,现在函数返回一个新对象:)
  • 非常感谢我在过去的一天里一直在研究这个,但没有成功!!!
  • @newtojs 很高兴为您提供帮助,如果您认为此答案可以解决您的问题,您可以accept the answer
【解决方案2】:
if (old_key !== new_key) {
  Object.defineProperty(o, new_key,
    Object.getOwnPropertyDescriptor(o, old_key));
  delete o[old_key];
}

从这个答案:

https://stackoverflow.com/a/14592469/9504351

【讨论】:

  • 我收到以下错误,因为我需要返回一个新对象,请问有什么提示吗?谢谢 AssertionError: 预期 { Object (surname, job, ...) } to not equal { Object (surname, job, ...) }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-05-21
  • 2020-11-26
  • 2018-05-17
  • 2021-12-14
  • 2021-05-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多