javascript - 对象作为未定义返回
问题描述
const loadObject = (selectedweapon) => {
//Loads up the weapon.json
const weaponspath = path.normalize('./damage_calculatons/../Mobs and Weapons/weapons.json')
var file_content = fs.readFileSync(weaponspath);
var weaponjson = JSON.parse(file_content);
//Searches for each weapon
selectedweapon = selectedweapon.toLowerCase()
weaponjson.forEach(mctype => {
mctype.weapon.forEach(category => {
category.material.forEach(material => {
if (material.weapon.toLowerCase() === selectedweapon){
const {weapon, damage, attackspeed, sharpness, strength} = material;
//Renames keys in object
let weaponUsed = {
NAME : weapon,
ATK: damage,
ATKSPEED: attackspeed,
SHARP: sharpness,
STR: strength
}
return(weaponUsed)
}
})
})
})}
const weaponUsed = loadObject('Gold Sword')
console.log(weaponUsed)
我正在尝试从 JSON 文件中获取一个数组,在数组中找到要查找的对象,使用不同的键克隆该对象,然后返回新的对象 WeaponUsed。它应该显示 object
{ NAME: 'Gold Sword', ATK: 4, ATKSPEED: 1.6, SHARP: 0, STR: 0 }
,但它却显示undefined
。当我这样做时
if (material.weapon.toLowerCase() === selectedweapon){
const {weapon, damage, attackspeed, sharpness, strength} = material;
let weaponUsed = {
NAME : weapon,
ATK: damage,
ATKSPEED: attackspeed,
SHARP: sharpness,
STR: strength
}
console.log(weaponUsed)
}
})
})
})}
它显示了对象{ NAME: 'Gold Sword', ATK: 4, ATKSPEED: 1.6, SHARP: 0, STR: 0 }
解决方案
尝试这样做
const loadObject = (selectedweapon) => {
//Loads up the weapon.json
const weaponspath = path.normalize('./damage_calculatons/../Mobs and Weapons/weapons.json')
var file_content = fs.readFileSync(weaponspath);
var weaponjson = JSON.parse(file_content);
//Searches for each weapon
selectedweapon = selectedweapon.toLowerCase()
let weaponUsed;
weaponjson.forEach(mctype => {
mctype.weapon.forEach(category => {
category.material.forEach(material => {
if (material.weapon.toLowerCase() === selectedweapon) {
const { weapon, damage, attackspeed, sharpness, strength } = material;
//Renames keys in object
weaponUsed = {
NAME: weapon,
ATK: damage,
ATKSPEED: attackspeed,
SHARP: sharpness,
STR: strength
}
}
})
})
})
return (weaponUsed)
}
const weaponUsed = loadObject('Gold Sword')
console.log(weaponUsed)
推荐阅读
- xamarin - 导航后 iOS 模拟器未使用全屏显示我的控件
- javascript - 如何创建响应式视频 (HTML5) 背景?
- vb.net - 获取字符串文件中每一行的第二项的最简单方法是什么
- python - 将 OCR 从每个图像中检索到的文本写入与每个图像对应的单独文本文件
- powershell - Azure DevOps 获取当前用户 ObjectId
- sql - 如何根据不同的条件添加group by子句?
- c++ - 未定义的行为或 gcc 优化错误
- webgl - Foveated Rendering:WebGL 能否将顶点/片段着色器从屏幕中心渲染到螺旋向外?
- mysql - 如何改进查询以使某些玩家有一段时间没有玩玩家的排名仍然正确?
- haskell - 为什么使用组合运算符可以避免显式引用初始参数的需要?