Цикл по объекту JavaScript - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь перебрать этот объект JavaScript, но он возвращает только последний ключ.

Вот мой код

var array = [
    {
        "outfit": {
            "url": "http://www.nintendo.co.uk",
            "title":"T-shirt",
            "price":"£20"
        }
    },
    {
        "outfit": {
            "url": "http://www.nintendo.co.uk",
            "title":"T-shirt",
            "price":"£720"
        }
    },
    {
        "outfit": {
            "url": "http://www.nintendo.co.uk",
            "title":"T-shirt",
            "price":"£9920"
        }
    }
];

for(var i=0; i<array.length; i++){

    console.log(array[i]);

    $('.slide .content').each(function(index){
        if(i == index) {

            console.log(i + "==" + index);
            var contentDiv = $('.slide .content')[index];

            contentDiv.innerHTML = "";
            contentDiv.innerHTML = '<a href="'+ array[i].url +'">'+ array[i].title + '<span>'+ array[i].price +'</span></a>'
        }


    });

}

Я в основном пытаюсь перебрать данные, извлекая их для карусели справочника. Затем добавьте каждый фрагмент данных в $ ('. Slide .content') для каждого слайда карусели.

Любая помощь будет принята с благодарностью. Большое спасибо

Ответы [ 3 ]

0 голосов
/ 05 июля 2018

Отредактированный

var array = [
    {
        "outfit": [
            {
                "link": {
                    "url": "http://www.nintendo.co.uk",
                    "title":"T-shirt",
                    "price":"£20"
                },
            },
            {
                "link": {
                    "url": "http://www.bbc.co.uk",
                    "title":"Trousers",
                    "price":"£60"
                }
            }
        ]
    },
    {
        "outfit": [
            {
                "link": {
                    "url": "http://www.nintendo.co.uk",
                    "title":"Dress",
                    "price":"£920"
                }
            }
        ]
    }
];
array.forEach(function(value, index ){
    value.outfit.forEach(function( outfitValue, outfitIndex){
        console.log(outfitValue.link.title);
    });    
});

Результат

  • футболка
  • Брюки
  • платье

https://jsfiddle.net/jzpL8dnm/13/


Я изменил структуру вашего кода. Это может помочь вам решить вашу проблему.

var array = [
    {
        "outfit": {
            "link": {
                "url": "http://www.nintendo.co.uk",
                "title":"T-shirt",
                "price":"£20"
            },
            "link": {
                "url": "http://www.bbc.co.uk",
                "title":"Trousers",
                "price":"£60"
            }
        }
    },
    {
        "outfit": {
            "link": {
                "url": "http://www.nintendo.co.uk",
                "title":"Dress",
                "price":"£920"
            }
        }
    }
];

for(var key in array){
    console.log(array[key]);
}
0 голосов
/ 05 июля 2018

Я обнаружил, что если у нас есть одинаковые ключи в объекте JavaScript, то при обходе объекта JavaScript транспортером / компилятором он получит обновленную информацию о ключах. Таким образом, ключи должны быть уникальными, если вы действительно хотите достичь этого. Ассоциативный массив - это наиболее удобный способ, потому что индексирование поможет вам получать данные, будь то данные дубликаты или нет.

второй способ: если вы хотите использовать только объект js, создайте массив в объекте js, в котором у вас тот же ключ.

0 голосов
/ 05 июля 2018

У вас одинаковые ключи. Ключи в объектах JS должны быть уникальными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...