Невозможно перебрать массив объектов (неопределенная ошибка) - PullRequest
0 голосов
/ 01 сентября 2018

ПРОБЛЕМА

Как перебрать массив объектов?

PEN

Codepen: penHere

КОД

Я объявил этот глобальный констант:

const items=[
    {
        name: "axe",
        image: "https://image.ibb.co/cjtHPe/if_weapon_04_707486.png",
        hit: 3
    },

    {   
        name: "redPotion", 
        image: "https://image.ibb.co/gTmU4e/if_18_Harry_Potter_Colour_Potion_Bottle_2730331.png",
        health: 40
    },

];

с помощью этой функции я давал персонажам и предметам случайные координаты, где порождаться

function placeCharAndItem(char, items){

    let coord = randomCoord();

    let toCheck = mapA[coord.row][coord.cell];     
    let check = toCheck.search('nonWalkable');


    while(check != -1){
        coord = randomCoord();

        toCheck = mapA[coord.row][coord.cell];     
        check= toCheck.search('nonWalkable');
    };
        place(coord, char);
        placeItem(coord, items);
};

и с функцией ниже элементы должны появляться на карте:

function placeItem(coord, items){
  items.forEach(function(obj){
       console.log(items.name);
    coord=randomCoord();  
    var charImage = $("<img>").attr("src", items.image).addClass('items');
    var row = $($("#tableGame tr")[coord.row]);
    var cell = $($("td", row)[coord.cell]);
    var tile = $(".tile", cell);  tile.prepend(charImage);
    })
};

Основная проблема заключается в том, что массивы итеративны (я думаю), но каждый раз, когда они дают мне «неопределенный», вместо того, чтобы дать мне правильную ссылку на изображения.

ЗАДАЧА

Я должен показать изображение этих предметов в таблице

Соображения

Я прочитал несколько ваших ответов на эту тему в Stack Overflow, они рекомендовали использовать циклы forEach или old-fashon for, надеюсь, я прав, но если я ошибаюсь Кстати, любая коррекция была бы очень признательна.

1 Ответ

0 голосов
/ 01 сентября 2018

Вы перебираете массив, но не обращаетесь к объекту правильно.

function placeItem(coord, items){
  items.forEach(function(obj){ // <- obj is what you want
    // console.log(items.name); <- items is the array
    console.log(obj.name);

    coord=randomCoord();

    // var charImage = $("<img>").attr("src", items.image).addClass('items');
    var charImage = $("<img>").attr("src", obj.image).addClass('items');

    var row = $($("#tableGame tr")[coord.row]);
    var cell = $($("td", row)[coord.cell]);
    var tile = $(".tile", cell);  
    tile.prepend(charImage);
  })
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...