我的任务是创建一个函数,用对象内部的名称交换数组内的名称。 丹尼尔的名字应改为菲利克斯,他的年龄应该保持不变。最后,对象应该是这样的。
{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()时,对象完全一样。
答案 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)
}