2014-12-07 38 views
0

我需要啓動一個對象,如下所示。是否有更簡單的方法來初始化它並定期重置它以使所有值都爲0,或者僅僅是使用for循環的情況?如何定義/重置所有對象項目爲零

var vote_tally = {}; 
vote_tally[1]=0; 
vote_tally[2]=0; 
vote_tally[3]=0; 
vote_tally[4]=0; 

任何幫助表示讚賞。

+0

看起來你可能想在這裏使用一個數組而不是對象... – tkone 2014-12-07 22:21:38

+0

但是,你可以循環。 Object.forEach或甚至簡單的for循環都可以做到這一點。 – tkone 2014-12-07 22:22:06

+0

我從2009年開始使用Javascript進行編程,而且我從來沒有見過任何方式沒有循環... – 2014-12-07 22:22:31

回答

1

您可以通過提供構造函數並添加到其原型來完成此操作。

function MyObject(value) { 
    value = value || 0; 
    this[1] = value; 
    this[2] = value; 
    this[3] = value; 
    this[4] = value; 
} 

MyObject.prototype.reset = function (value) { 
    value = value || 0; 
    for (var key in this) { 
     if (this.hasOwnProperty(key)) { 
      this[key] = value; 
     } 
    } 
}; 

var o = new MyObject(); 
o['1'] = 42; 
o.reset(); 
console.log(); 
// {1:0,2:0,3:0} 

如果你想任意長度的數組並初始化所有數值爲0。我們可以做到這一點。

function initArray(size, value) { 
    value = value || 0; 
    return Array.apply(0, Array(size)).map(function() {return value;}); 
} 

var a = initArray(10); 
console.log(a); 
// [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 

var b = initArray(10, 1); 
console.log(b); 
// [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] 

如果你想重置數組的所有值,可以這樣做。然而,修改JavaScript內置原型並不是一個好習慣。

Array.prototype._reset = function (value) { 
    value = value || 0; 
    for (var i = 0; i < this.length; i += 1) { 
     this[i] = value; 
    } 
}; 

b._reset(); 
console.log(b); 
// [0, 0, 0, 0, 0, 0, 0, 0, 0, 0] 
-1

可以實例像這樣的數組:

var array = [0, 0, 0]; 

對象:

var object = {firstName:"John", lastName:"Doe", age:50, eyeColor:"blue"}; 

要清空它,你可以只寫:array = []

但請解釋這是什麼你試圖去做,因爲你可能會從錯誤的角度來處理這個問題。

相關問題