我正在进行一些测验,我在这里有这些控制台日志:
console.log(obj) => { cat: undefined, dog: undefined }
console.log(keys)` => [ 'cat', 'dog' ]
console.log(reversedKeys) =>[ 'tac', 'god' ]
我的目标是更新对象属性。我这样做(试图通过键映射)但这段代码不起作用。我刚刚开始学习javascript并且明显遗漏了这段代码中的内容。我看得越多,我发现自己就越困惑。
keys.map(k => {
reversedKeys.map(r => {
obj[keys[k]] = r
})
return obj
})
预期结果为:console.log(obj)
=> { cat: tac, dog: god}
。
答案 0 :(得分:3)
使用for..in
迭代对象。然后使用split方法创建key
中使用的字符数组。使用数组reverse方法反转数组和join
方法以创建新字符串
var obj = {
cat: undefined,
dog: undefined
}
for (var keys in obj) {
obj[keys] = keys.split("").reverse().join("")
}
console.log(obj)
答案 1 :(得分:2)
您可以使用for..in
循环来迭代对象键,将元素名称转换为数组,.reverse()
,.join()
let obj = { cat: undefined, dog: undefined };
for (let key in obj) {
obj[key] = [...key].reverse().join("")
}
console.log(obj);
答案 2 :(得分:1)
根据对象的不同,for...in
可能会返回意外的结果,因为它会在原型中包含可枚举的属性。要排除那些,您可以使用if
添加obj.hasOwnProperty(key)
语句作为条件:
const obj = { cat: undefined, dog: undefined }
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
obj[key] = key.split("").reverse().join("")
}
}
console.log(obj)

你也可以使用Object.keys()
,它不包括原型中的可枚举属性,如下所示:
const obj = { cat: undefined, dog: undefined }
Object.keys(obj).forEach(key => {
obj[key] = key.split("").reverse().join("")
})
console.log(obj)