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