2014-12-07 2 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

+0

Но да, вы можете просто петли. 'Object.forEach' или даже простой цикл' for' может это сделать. – tkone

+0

Я программирую в Javascript с 2009 года, и я никогда не видел никакого способа сделать это без цикла ... –

ответ

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 = []

Но, пожалуйста, объясните, что это такое которые вы пытаетесь сделать, поскольку вы можете приближаться к этому с неправильного угла.