2014-03-20 5 views
0

быстрый вопрос (и, возможно, легко) для y'all:Поперечная массив объектов и заменить значение всех полей в JavaScript

Я получил этот массив:

this.skins = { 
    "hologramDark": { 
     dialog: { 
      default: "bgDialog" 
     }, 
     button: { 
      default: "btnDefault", 
      disabled: "btnDisabled", 
      focused: "btnFocused", 
      pushed: "btnPushed", 
     } 
    } 
}; 

И мне нужно (исходя из C# + LINQ), выполните «для каждого элемента в« голограмме », замените значение« по умолчанию: »диалогового окна с результатом функции (например, assignImage(dialog.default)), затем для значений каждой кнопки (по умолчанию, отключено, сфокусировано , и т. д.) делают то же самое.

Любые указатели? Я работал с обычными массивами [] но я не знаю, как их перенести.

Спасибо!

+2

Это не _JavaScript Array_ .. –

+0

Вы правы, моего плохого. Я сделал это сообщение немного быстро, прежде чем начал возвращаться домой с работы. Хотя иногда я использую их как массивы, это скорее объект, чем массив, спасибо за исправление: P – DARKGuy

ответ

1

Вы можете перебирает свойства объекта с помощью for..in

var obj = this.skins.hologramDark, key; // remember to var 
for (key in obj) { // loop over each key 
    if (obj.hasOwnProperty(key)) { // if the key is on the obj (not inherited) 
     if (typeof obj[key] === 'object') { // and the property is another object 
      obj[key].default = 'foo'; // set the property default 
     } 
    } 
} 
+0

Проверка 'hasOwnProperty' здесь не нужна и может быть запутанной. – Bergi

+0

Это имеет смысл, если вы работаете с системой ООП в JS. Большое спасибо за помощь Павлу! : D код работал отлично :) – DARKGuy