Mootools: я хочу пройти через следующий массив в mootools - PullRequest
1 голос
/ 26 декабря 2010

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

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

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

Ответы [ 2 ]

2 голосов
/ 27 декабря 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: каждый.

[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++){} для массивов в простом JavaScript

1 голос
/ 26 декабря 2010

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

Пример: 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 );
    }
}
...