将js对象中的所有值更改为0

时间:2017-01-26 14:58:42

标签: javascript arrays loops object

是否可以将对象中的所有值更改为0,而无需逐个输入?

这是对象示例:

var obj = {
 sth: {
  sth1: 15,
  sth2: 25,
  sth3: 0
 },
}

obj.sth 的所有值设置为0,而无需输入:

obj.sth.sth1 = 0;
obj.sth.sth2 = 0;
obj.sth.sth3 = 0;

超过100个需要重置为0方法的值是一种痛苦。

另外,使用

document.getElementById(id1).innerHTML = obj.sth.sth1;
document.getElementById(id2).innerHTML = obj.sth.sth2;
document.getElementById(id3).innerHTML = obj.sth.sth3;

等等,在用户重置后更新值...为此,我正在考虑制作一个数组:

var ids = [
 "sth1",
 "sth2",
 "sth3"
]

然后:

for( i = 0; i < 3; i ++) {
 document.getElementById(ids[i]).innerHTML = "0";
}

更新HTML文档的方法好吗?我仍然需要在数组中键入所有id和值,但至少它会更透明。也许有更好的方法?我假设,要更新对象中的值,我还需要一个循环,但没有想到任何想法?谢谢!

3 个答案:

答案 0 :(得分:1)

迭代一个对象:

for(var key in obj.sth) {
  obj.sth[key] = 0;
}

并将值分配给html可能会为元素设置一个特定的类,然后迭代所有这些将帮助您更多而不是使用id

答案 1 :(得分:0)

您可以使用单个循环并分配给所有属性0,并使用属性值设置元素。

使用

var obj = { sth: { sth1: 15, sth2: 25, sth3: 0 } };

Object.keys(obj.sth).forEach(function (key) {
    obj.sth[key] = 0;
    document.getElementById(key).innerHTML = obj.sth[key];
});

console.log(obj);
<div id="sth1">foo</div>
<div id="sth2">foo</div>
<div id="sth3">foo</div>

答案 2 :(得分:0)

使用for in循环

for (prop in obj.sth) {
 if(obj.sth.hasOwnProperty(prop)){
  obj.sth[prop] = 0;
 }
}