如何替换对象内的属性名称?使用Javascript

时间:2018-04-09 23:50:02

标签: javascript arrays object for-loop

我的任务是创建一个函数,用对象内部的名称交换数组内的名称。 丹尼尔的名字应改为菲利克斯,他的年龄应该保持不变。最后,对象应该是这样的。

{Felix:18,Carlos:21,Sasha:22,John:20}

来自此

{Daniel:18,Tyler:21,Michelle:22,Austin:20}

到目前为止我所拥有的。我是编程新手,所以请尽量放轻松。

function swapNames(oldNames,newNames){
  for(var i in oldNames) {
    for(var k = 0; k < newNames.length; k++) {
      i = newNames[k];
  }
}
  console.log(i)
}

swapNames({Daniel:18,Tyler:21,Michelle:22,Austin:20}, 
["Felix","Carlos","Sasha","John"])

我认为这会循环遍历对象和数组,并将对象属性名称设置为我所在的当前字符串。但是当我在console.log()时,对象完全一样。

2 个答案:

答案 0 :(得分:2)

这是你能做的。

const swapNames = (inputObj, outputNames) => {
  const output = {};
  Object.keys(inputObj).forEach((key, index) => {
    output[outputNames[index]] = inputObj[key];
  });
  return output;
}
console.log(swapNames({
  Daniel: 18,
  Tyler: 21,
  Michelle: 22,
  Austin: 20
}, ["Felix", "Carlos", "Sasha", "John"]));

答案 1 :(得分:1)

我不想放弃答案,但你的问题就在这里

for(var i in oldNames) {
    // when i = Daniel;
    for(var k = 0; k < newNames.length; k++) {
      i = newNames[k];
      // you loop here keep change i from Daniel to "Felix","Carlos","Sasha","John", 
      // then you go back to above loop and repeat this, so all four old name got stuck with John 
    }

    console.log(i)
}