Mootools: я хочу пройти по следующему массиву в mootools

Я изучаю mootools. У меня есть массив в следующем формате. Я хочу пройти его в цикле for, но не знаю, как это сделать.

{'apple' : { 'prize' : 10 , 'color' : 'Red' } ,
'banana' : { 'color' : 'red', 'prize' : 20, 'quantity' : 12 } }

Я получаю указанную выше структуру массива из другого модуля, поэтому я не могу изменить его структуру.


person Vinay Jeurkar    schedule 26.12.2010    source источник


Ответы (2)


Это объекты, а не массивы.

Пример: http://jsfiddle.net/AkVvY/

var obj = {'apple' : { 'prize' : 10 , 'color' : 'Red' } ,
'banana' : { 'color' : 'red', 'prize' : 20, 'quantity' : 12 } };

for( var name in obj ) {
    alert( name + ': ' + obj[name].color );
}

Для этого вам не нужна библиотека.

Если вас беспокоит, что в Object.prototype могут быть дополнения, сделайте следующее:

Пример: http://jsfiddle.net/AkVvY/1/

for( var name in obj ) {
    if( obj.hasOwnProperty( name ) ) {
        alert( name + ': ' + obj[name].color );
    }
}
person user113716    schedule 26.12.2010

В MooTools есть функция для этого, поэтому вам не нужно использовать hasOwnProperty проверку самостоятельно:

Object.each({ 'prize' : 10 , 'color' : 'Red' }, function(value, key){
    // what you like to do.
});

См. Документацию: http://mootools.net/docs/core/Types/Object#Object:Object-each

Действительно важно знать разницу между массивом и объектом. В приведенном выше примере используется литерал объекта.

Для массивов вы можете использовать Array: each.

[1, 2, 3, 4].each(function(value, key){
    // what you like to do.
});

Документы: http://mootools.net/docs/core/Types/Array#Array:each

Но, как упоминалось в другом ответе, вы можете сделать это с for (var key in obj){} циклами для объектов и for (var i = 0, l = arr.length; i < l; i++){}loops для массивов в простом JavaScript.

person arian    schedule 27.12.2010
comment
Я попытался использовать этот код со своей структурой, но не смог получить никаких результатов: Object.each ({'primer': 10, 'color': 'Red'}, function (value, key) {// что вам нравится делать. }); - person Vinay Jeurkar; 27.12.2010
comment
+1 @arian. @Johny: вы, наверное, используете старую версию mootools. попробуйте obj.each(function(el) { console.log(el); }); - person Dimitar Christoff; 27.12.2010