Reactjs 从对象动态返回特定属性
我正在尝试创建一个函数,该函数将从对象返回所需的属性 对象将如下所示:Reactjs 从对象动态返回特定属性,reactjs,react-native,Reactjs,React Native,我正在尝试创建一个函数,该函数将从对象返回所需的属性 对象将如下所示: export var Characters = [ { id: 1, Name: "Abe", HitPointValue: "124", StrengthValue: "12", IntelligenceValue: "14", WisdomValue: "16", DexterityValue: "12
export var Characters = [
{
id: 1,
Name: "Abe",
HitPointValue: "124",
StrengthValue: "12",
IntelligenceValue: "14",
WisdomValue: "16",
DexterityValue: "12",
ConstitutionValue: "10",
CharismaValue: "17",
Avatar: require('./images/avatar_7.jpg')
}
]
<Text style={[styles.stats]}>
{"\n"}
Wisdom Value: {getStat(1, 'WisdomValue')}{"\n"}
</Text>
我试过这个:
export function getStat(id, stat) {
var idx = Characters.findIndex((val) => val.id == id);
return Characters[idx].stat;
}
例如,假设我需要获取此对象的“WisdomValue”
所以我这样称呼它:
export var Characters = [
{
id: 1,
Name: "Abe",
HitPointValue: "124",
StrengthValue: "12",
IntelligenceValue: "14",
WisdomValue: "16",
DexterityValue: "12",
ConstitutionValue: "10",
CharismaValue: "17",
Avatar: require('./images/avatar_7.jpg')
}
]
<Text style={[styles.stats]}>
{"\n"}
Wisdom Value: {getStat(1, 'WisdomValue')}{"\n"}
</Text>
{“\n”}
智慧值:{getStat(1,'WisdomValue')}{\n}
但我刚刚得到一个错误“未定义的不是对象”
如何以动态方式仅获取一个特定属性?因此,我不必编写像getHitPointValue(id)、GetStrengthValue(id)之类的separte函数
谢谢 使用
[]
而不是使用点表示法,因为您试图通过动态键访问值
检查此代码段:
var字符=[
{
id:1,
姓名:“安倍”,
生命值:“124”,
强化值:“12”,
智能评价:“14”,
智慧值:“16”,
灵巧值:“12”,
宪法价值:“10”,
魅力价值:“17”,
}
]
函数getStat(id,stat){
var idx=Characters.findIndex((val)=>val.id==id);
如果(idx>=0)
返回字符[idx][stat];
否则返回“未找到”
}
log(getStat(1,“WisdomValue”);
log(getStat('15','abc')代码>使用[]
而不是使用点符号,因为您试图通过动态键访问值
检查此代码段:
var字符=[
{
id:1,
姓名:“安倍”,
生命值:“124”,
强化值:“12”,
智能评价:“14”,
智慧值:“16”,
灵巧值:“12”,
宪法价值:“10”,
魅力价值:“17”,
}
]
函数getStat(id,stat){
var idx=Characters.findIndex((val)=>val.id==id);
如果(idx>=0)
返回字符[idx][stat];
否则返回“未找到”
}
log(getStat(1,“WisdomValue”);
log(getStat('15','abc')代码>
var字符=[
{
id:1,
姓名:“安倍”,
生命值:“124”,
强化值:“12”,
智能评价:“14”,
智慧值:“16”,
灵巧值:“12”,
宪法价值:“10”,
魅力价值:“17”,
}
]
函数getStat(id,stat){
//您可以直接找到对象,而不是通过数组索引
var character=Characters.find((val)=>val.id==id);
//注意不存在的字符
如果(!字符){
抛出新错误(`id为${id}的字符不存在`);
}
//关心不存在的统计数据
如果(!character.hasOwnProperty(stat)){
抛出新错误(`Stat${Stat}对于id为${id}`的字符不可用);
}
//在计算动态属性名称时,使用[]符号而不是点符号
返回字符[stat];
}
log(`WITH Value:${getStat(1,'WisdomValue')}`);
log(`Charisma Value:${getStat(1,'CharismaValue')}`);
试一试{
log(getStat(2,'Name'));
}捕获(e){
控制台日志(e.message);
}
试一试{
log(getStat(1,'value'));
}捕获(e){
控制台日志(e.message);
}
var字符=[
{
id:1,
姓名:“安倍”,
生命值:“124”,
强化值:“12”,
智能评价:“14”,
智慧值:“16”,
灵巧值:“12”,
宪法价值:“10”,
魅力价值:“17”,
}
]
函数getStat(id,stat){
//您可以直接找到对象,而不是通过数组索引
var character=Characters.find((val)=>val.id==id);
//注意不存在的字符
如果(!字符){
抛出新错误(`id为${id}的字符不存在`);
}
//关心不存在的统计数据
如果(!character.hasOwnProperty(stat)){
抛出新错误(`Stat${Stat}对于id为${id}`的字符不可用);
}
//在计算动态属性名称时,使用[]符号而不是点符号
返回字符[stat];
}
log(`WITH Value:${getStat(1,'WisdomValue')}`);
log(`Charisma Value:${getStat(1,'CharismaValue')}`);
试一试{
log(getStat(2,'Name'));
}捕获(e){
控制台日志(e.message);
}
试一试{
log(getStat(1,'value'));
}捕获(e){
控制台日志(e.message);
}