我正在使用React和JavaScript。我正在尝试使用具有键值对的现有对象,并使键值对的每个值都等于null。
我尝试将for循环与in关键字一起使用。获取每个键值对并将其更改为null,但是出了点问题,我不知道如何解决。
let myObj = {name: 'Bob', lname: 'Johnson'};
for (let x in myObj) {
myObj.x = null;
}
return myObj;
我希望myObj变量将其所有键值对都等于null。 最终结果:
myObj = {name: null, lname: null};
答案 0 :(得分:1)
您需要按名称访问属性,而不是访问对象上的属性x
。
let myObj = {name: 'Bob', lname: 'Johnson'}
for (let x in myObj) {
myObj[x] = null
}
console.log(myObj)
答案 1 :(得分:1)
记住当您这样做
obj.x = 'some value'
您实际上正在尝试访问对象上名为x的属性。
但是当您这样做
obj[x] = 'some value'
Javascript将尝试解析变量x的值,并将其用作属性名称。
现在应该清楚的是,您可以在对象的键上运行forEach并将每个属性设置为null。
Object.keys(myObj).forEach(key => myObj[key] = null)
答案 2 :(得分:1)
如果要使其保持不变,则可以简单地使用相同的键创建一个新对象。
const NullifyValues = obj => {
return Object.keys(obj).reduce((result, key) => {
result[key] = null;
return result;
}, {})
}
const test = {
cat: 1,
dog: 2,
bat: 3
}
const nullified = NullifyValues(test);
console.log(nullified) // Object { cat: null, dog: null, bat: null }
答案 3 :(得分:0)
将您的对象更新为使用bracket notationn而不是dot notation。这样,您将使用变量x
而不是文字值“ x”
请参见下面的工作示例:
let myObj = {name: 'Bob', lname: 'Johnson'};
for (let x in myObj) {
myObj[x] = null; // change from myObj.x to myObj[x]
}
console.log(myObj);
答案 4 :(得分:0)
使用香草JS一行:
Object.keys(myObj).forEach(v => myObj[v] = null)
答案 5 :(得分:0)
您可以使用Object.keys
和forEach
简洁地完成此操作:
const myObj = {name: 'Bob', lname: 'Johnson'};
Object.keys(myObj).forEach(k => myObj[k] = null);
console.log(myObj);