js如何最有效的把对象的值清空

如题 js如何最有效最简单的把对象的值清空
怪我没说清楚
let obj={a:1,b:2}
变成这样
{a:'',b:''}

clipboard.png
我写了一段代码 for in 和 for 的耗时

clipboard.png
把对象弄大一点

阅读 34k
5 个回答

值清空? 什么意思?删除所有属性?
那你置为null直接赋值为一个空对象不就行了..

let obj = { "key1": 1, "key2": 2 };
// 赋值为空对象
obj = {};
//或者置为空
obj = null;


提问没说清楚别踩我答案啊.....
es6遍历的话你可以用for of,当然你可以试下如下方式...

let obj = { "key1": 1, "key2": 2 };
Object.keys(obj).forEach(key => obj[key] = '');
var obj={'one':1,'two':2}
     for(let key in obj){
         delete obj[key]
     }
console.log(obj)  //{}

举一反三啊

var obj={'one':1,'two':2}
     for(let key in obj){
         obj[key]  = ''
     }
console.log(obj)   //{'one':'','two':''}
for (let k of Object.keys(obj)) {
    obj.k = ''
}

es6的
关于楼上说的forin最简洁的说法,其实forin是性能最低的用法,有兴趣的话可以阅读这篇文章

方法一:字面量定义对象

第一步,定义一个空对象并打印出来,代码和效果:

代码:

var student = {};
console.log(student);
第二步,为对象添加属性并打印,代码和打印结果如下:

代码:

student.name = "xiaoming";
student.age = 12;
console.log(student);

第三步,删除对象属性(清空对象)并打印,代码和打印结果如下:

代码:

for(var key in student){
delete student[key];
}
console.log(student);
由此可见,对象被清空后,又变成了空对象,实现了对象重置。

方法二:构造函数定义对象
SouthEast

新手上路,请多包涵

这个原生for循环是不对的,对象没有length属性。
效率来说应该是for in 最快。
用Object.keys的话,需要两次循环,虽然for in 性能比较差,但也是要快过2次循环的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题