перебор массива обьектов на js

393
24 июля 2017, 17:06

подскажите как можно перебрать такой массив на js

[Data
    {
        id=3, 
        name='test_1', 
        duration=60, 
        level=3,     
        country=Country{
            id=1, 
            name='Russia',      
            countryCode='RU'
        },
        images=[
            Media{
                id=101, 
                folder=Folder{
                    id=1, 
                    name='quest_images'
                }, 
                name='1.jpg', 
                fileName='img-1499215567399.jpg'
            }, 
            Media{
                id=102, 
                folder=Folder{
                    id=1, 
                    name='quest_images'
                }, 
                name='2.jpg', 
                fileName='img-1499215574221.jpg'
            }
        ]
    }, 
Data
    {
        id=4, 
        name='test_2', 
        duration=20, 
        level=1,     
        country=Country{
            id=1, 
            name='Russia',      
            countryCode='RU'
        },
        images=[
            Media{
                id=101, 
                folder=Folder{
                    id=1, 
                    name='quest_images'
                }, 
                name='1.jpg', 
                fileName='img-1499215567399.jpg'
            }, 
            Media{
                id=102, 
                folder=Folder{
                    id=1, 
                    name='quest_images'
                }, 
                name='2.jpg', 
                fileName='img-1499215574221.jpg'
            }
        ]
    }
]

или как достать из первого обьекта id=3, name='test_1' и из второго обьекта id=4, name='test_2'?

Answer 1

попробуйте етим циклом, если я првильно понял:

for(var i = 0; i < array.length;i++){
  alert(array[i].id + ' ' + array[i].name);
  alert(array[i].id + ' ' + array[i].name);
}

если масив правильно построен должно работать и выводить эти свойства (вместо array - название вашего массива)

var array = [{ 
  id: 3, 
  name: 'test', 
}, 
{ 
  id: 4, 
  name:'test2', 
} 
] 
for(var i = 0; i < array.length;i++){ 
  alert(array[i].id + ' ' + array[i].name); 
}

Answer 2

Для этого нужно использовать замыкание. В примере, функция eachObject принимает в качестве аргумента объект и перебирает его свойства. На каждой итерации функция проверяет, не является ли свойство объектом? Если является, функция вызывает сама себя и передает в качестве аргумента это свойство. Иначе функция просто выводит в консоль полученное свойство.

	var obj = { 
		name : 'object', 
		type : 'object', 
		props : { 
			prop1 : '123', 
			prop2 : 'abc' 
		} 
	} 
 
	var eachObject = function(obj){ 
		for (key in obj) { 
			if( typeof(obj[key]) === 'object' ){ 
				eachObject(obj[key]); 
			} else { 
				console.log(key); 
			} 
		} 
	}; 
 
	eachObject(obj);

READ ALSO
Упорядывачение данных

Упорядывачение данных

Есть исходный массив:

303
Наклон устройства

Наклон устройства

Ребят, столкнулся с такой проблемойДелаю приложение на cordova

332
Месяц в родительном падеже momentjs

Месяц в родительном падеже momentjs

ПриветКак вывести дату в родительном падеже в momentjs? Например, не сентябрь, а сентября

359