如何在 JavaScript 中将所有对象属性设置为 null?

Posted

技术标签:

【中文标题】如何在 JavaScript 中将所有对象属性设置为 null?【英文标题】:How to set all object properties to null in JavaScript? 【发布时间】:2017-07-12 03:01:09 【问题描述】:

我正在使用 Vue,但使用 vuetify 计算的一些 CSS 突然无法正常工作。

我声明对象的方式是

personal_info : 

在我的模板中,我可以在文本输入的每个 v-model 中执行 personal_info.name 和其他更多操作。

我没有错误,但 vuetify 突然有了一个名为 input-group--dirty 的类,只要它不为空,它就会提升文本输入的标签。但是突然之间,它不起作用了。它看起来像这样:

如您所见,文本和标签是重叠的。 使它起作用的唯一方法是将属性设置为 null,即:

personal_info : 
  name: null

问题是我有数百个文本输入,我不想将所有内容都设置为 null。

有没有一种简单的方法可以将对象的所有属性设置为 null 而不是一一编码?

【问题讨论】:

你可以设置:personal_info = @Saurabh 更新了我的帖子 【参考方案1】:

Vilas 示例没问题。但是如果你有嵌套属性并且你的 obj 看起来像这样,你可以试试我的 sn-p

var obj = 
  a: 1 ,
  b: 2,
  c: 
    e:3,
    b: 
      d:6,
      e: ['23']
    
  
;

var setProps = function(flat, newVal)
   for(var i in flat)
     if((typeof flat[i] === "object") && !(flat[i] instanceof Array))
       setProps(flat[i], newVal);
       return;
      else 
       flat[i] = newVal;
     
  

setProps(obj, null);

console.log(JSON.stringify(obj));

【讨论】:

【参考方案2】:

签出这个sn-p

var personal_info = 
  name: 'john',
  email: 'john@moto.com',
  phone: 9876543210

console.log(JSON.stringify(personal_info)); //before looping

for (var key in personal_info ) 
  personal_info[key] = null;


console.log(JSON.stringify(personal_info));//after looping and setting value to 'null'

【讨论】:

把它和我的代码结合起来是行不通的,因为我们知道 javascript 是同步的 @FewFlyBy 您现在面临什么问题?这个对象是怎么产生的?您是否使用任何/更多 api 调用来生成它? 我没有使用任何 api 等。我仍然得到同样的东西 好的,您介意分享一下personal_info 中存储的数据类型吗?或者您可以创建一个小提琴并粘贴链接 如果我把项目放到github上你有兴趣吗?只需 npm install 和 npm run dev it after ..

以上是关于如何在 JavaScript 中将所有对象属性设置为 null?的主要内容,如果未能解决你的问题,请参考以下文章

javascript面向对象

在javascript中将对象属性作为指针传递[重复]

如何在 JavaScript 中给定其字符串名称设置对象属性(对象属性的..)?

如何在 HTML 日期输入类型中将对象的日期属性显示为默认值

如何在 Typescript 中将具有动态键的对象设置为 React 状态

如何获取 JavaScript 对象的所有属性值(不知道键)?