如何在JavaScript中将对象的所有值设置为null?
答
这是一个有用的函数,称为'Object.keys()',它返回一个对象的所有属性名称。
let setAll = (obj, val) => Object.keys(obj).forEach(k => obj[k] = val);
let setNull = obj => setAll(obj, null);
非箭头功能版本:
function setAll(obj, val) {
/* Duplicated with @Maksim Kalmykov
for(k in obj) if(obj.hasOwnProperty(k))
obj[k] = val;
*/
Object.keys(obj).forEach(function(k) {
obj[k] = val
};
}
function setNull(obj) {
setAll(obj, null);
}
答
您可以使用Object.keys()
为念贻王在他的回答中提到,或for in
,像这样:
for (key in obj) {
if (obj.hasOwnProperty(key)) {
obj[key] = null;
}
}
但在这你应该检查hasOwnProperty()
。
答
但是这个对象可能很大,所以我不能一个接一个地去做。
“大”你的意思是“数以百万计的物业”,你关心的表现?或者你的意思是“一堆你不知道名称和/或不想列出的属性”?
如何一次设置所有属性?
你不行。无论如何,你必须循环。
不要改变现有对象,而应考虑创建一个新的空对象。它的属性值将是undefined
,但这可能取决于您的代码结构。
请为Object.keys提供参考。另外,请使用正确的术语。 “属性”不正确。最后,如果你要获得所有的功能,不应该将函数定义为'setAll = val => obj => ...',然后'const setNull = setAll(null);'? – 2017-08-26 17:51:42
这个答案仍然没有设置所有的值“一次”。它在属性上循环。 – 2017-08-26 17:52:54
@torazaburo我不是说这是有用的......只是箭头功能大声笑(顺便说一句,几乎不可能立即''一次') –