问题
如何遍历对象数组?
笔
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进行任何形式的校正都会非常感激。
答案 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);
})
};