无法迭代对象数组(未定义错误)

时间:2018-09-01 10:14:13

标签: javascript jquery arrays object

问题

如何遍历对象数组?

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或旧的for循环,希望对此是正确的,但是如果我以错误的方式对m进行任何形式的校正都会非常感激。

1 个答案:

答案 0 :(得分:2)

您正在迭代数组,但未正确访问该对象。

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);
  })
};