Javascript Lodash.\u带有嵌套对象的示例
我有一个嵌套对象的对象,如下所示:Javascript Lodash.\u带有嵌套对象的示例,javascript,lodash,nest-nested-object,Javascript,Lodash,Nest Nested Object,我有一个嵌套对象的对象,如下所示: var SimpleWeapons = { properties: "SimpleWeapons", Club:{Name:"Club", Cost:"1sp", Damage:"1d4 bludgeoning", Weight:"2lb", Properties:"Light"}, Dagger:{Name:"Dagger" , Cost:" 2 gp" , Damage: "1d4 piercing", Weight:"1lb"
var SimpleWeapons = {
properties: "SimpleWeapons",
Club:{Name:"Club", Cost:"1sp", Damage:"1d4 bludgeoning", Weight:"2lb", Properties:"Light"},
Dagger:{Name:"Dagger" , Cost:" 2 gp" , Damage: "1d4 piercing", Weight:"1lb" , Properties:"Finesse, light, thrown (range 20/60)"},
Greatclub:{Name:"Greatclub" , Cost:"2sp" , Damage: "1d8 bludgeoning ", Weight:"10 lb" , Properties:"Two-handed"},
Handaxe:{Name:"Handaxe" , Cost:"5gp" , Damage: "1d6 slashing", Weight:"2lb" , Properties:"Light, thrown (range 20/60)"},
Javelin:{Name:"Javelin" , Cost:"5sp" , Damage: "1d6 piercing", Weight:"2lb" , Properties:"Thrown (range 30/120)"},
LightHammer:{Name:"Light Hammer" , Cost:"2gp" , Damage: "1d4 bludgeoning", Weight:"2lb" , Properties:"Light, thrown (range 20/60)"},
Mace:{Name:"Mace" , Cost:"5gp" , Damage: "1d6 bludgeoning", Weight:"4lb" , Properties:""},
Quarterstaff:{Name:"Quarterstaff" , Cost:"2sp" , Damage: "1d6 bludgeoning", Weight:"4lb" , Properties:"Versatile (1d8)"},
Sickle:{Name:"Sickle" , Cost:"1gp" , Damage: "1d4 slashing", Weight:"2lb" , Properties:"Light"},
Spear:{Name:"Spear" , Cost:"1gp" , Damage: "1d6 piercing", Weight:"3lb" , Properties:"Thrown (range 20/60), versatile (1d8)"}
}
我想随机返回一个嵌套对象属性(如字符串),所以使用函数“Club”或“Dagger”。我在本项目中以以下方式在更平坦的对象中使用了.sample
和.sampleSize
:
var getDefaultEquipment = (chaClass) => {
if(chaClass === "Bard"){
var equipment = {};
equipment.equipment = (_.sampleSize(classes.Bard.equipment,1));
return equipment;}}
但我不确定如何进一步挖掘,或者即使有可能?如果您只想要一个结果,请使用
\uu.sample
获得一个随机项目。我也会使用。省略来确保你没有拉属性
键,这不是有效的武器
一旦从.sample
调用中获得了一个随机对象,就可以使用点表示法以通常的方式获取其名称:.name
例如:
var simplewapons={
属性:“simplewapons”,
俱乐部:{
名称:“俱乐部”,
成本:“1sp”,
伤害:“1d4重击”,
重量:“2lb”,
属性:“轻”
},
匕首:{
名字:“匕首”,
费用:“2英镑”,
伤害:“1d4穿刺”,
重量:“1lb”,
属性:“技巧,轻,投掷(范围20/60)”
},
伟大俱乐部:{
名称:“伟大俱乐部”,
成本:“2便士”,
伤害:“1d8重击”,
重量:“10磅”,
属性:“双手”
},
手斧:{
名称:“手斧”,
成本:“5gp”,
伤害:“1d6砍”,
重量:“2lb”,
属性:“光,投掷(范围20/60)”
},
标枪:{
名称:“标枪”,
费用:“5便士”,
伤害:“1d6穿刺”,
重量:“2lb”,
属性:“抛出(范围30/120)”
},
光锤:{
名称:“轻锤”,
成本:“2gp”,
伤害:“1d4重击”,
重量:“2lb”,
属性:“光,投掷(范围20/60)”
},
梅斯:{
名称:“狼牙棒”,
成本:“5gp”,
伤害:“1d6重击”,
重量:“4磅”,
属性:“
},
军需人员:{
姓名:“军需人员”,
成本:“2便士”,
伤害:“1d6重击”,
重量:“4磅”,
属性:“多功能(1d8)”
},
镰刀:{
名称:“镰刀”,
成本:“1gp”,
伤害:“1d4砍”,
重量:“2lb”,
属性:“轻”
},
矛:{
名称:“长矛”,
成本:“1gp”,
伤害:“1d6穿刺”,
重量:“3磅”,
属性:“投掷(射程20/60),多功能(1d8)”
}
}
const randomWearm=u0.sample(0.omit(simplewapons,“properties”)).Name;
日志(“随机武器:”,随机武器)代码>
如果您只想要一个结果,请使用\uuu.sample
获取一个随机项。我也会使用。省略来确保你没有拉属性
键,这不是有效的武器
一旦从.sample
调用中获得了一个随机对象,就可以使用点表示法以通常的方式获取其名称:.name
例如:
var simplewapons={
属性:“simplewapons”,
俱乐部:{
名称:“俱乐部”,
成本:“1sp”,
伤害:“1d4重击”,
重量:“2lb”,
属性:“轻”
},
匕首:{
名字:“匕首”,
费用:“2英镑”,
伤害:“1d4穿刺”,
重量:“1lb”,
属性:“技巧,轻,投掷(范围20/60)”
},
伟大俱乐部:{
名称:“伟大俱乐部”,
成本:“2便士”,
伤害:“1d8重击”,
重量:“10磅”,
属性:“双手”
},
手斧:{
名称:“手斧”,
成本:“5gp”,
伤害:“1d6砍”,
重量:“2lb”,
属性:“光,投掷(范围20/60)”
},
标枪:{
名称:“标枪”,
费用:“5便士”,
伤害:“1d6穿刺”,
重量:“2lb”,
属性:“抛出(范围30/120)”
},
光锤:{
名称:“轻锤”,
成本:“2gp”,
伤害:“1d4重击”,
重量:“2lb”,
属性:“光,投掷(范围20/60)”
},
梅斯:{
名称:“狼牙棒”,
成本:“5gp”,
伤害:“1d6重击”,
重量:“4磅”,
属性:“
},
军需人员:{
姓名:“军需人员”,
成本:“2便士”,
伤害:“1d6重击”,
重量:“4磅”,
属性:“多功能(1d8)”
},
镰刀:{
名称:“镰刀”,
成本:“1gp”,
伤害:“1d4砍”,
重量:“2lb”,
属性:“轻”
},
矛:{
名称:“长矛”,
成本:“1gp”,
伤害:“1d6穿刺”,
重量:“3磅”,
属性:“投掷(射程20/60),多功能(1d8)”
}
}
const randomWearm=u0.sample(0.omit(simplewapons,“properties”)).Name;
日志(“随机武器:”,随机武器)代码>
我知道已经有了一个公认的答案,但我也想展示一下如何使用\uuu.chain()
方法实现这一点:
_.chain(SimpleWeapons)
.omit('properties')
.sample()
.get('Name', '') // The extra '' is in case the .Name property is undefined.
.value();
我知道已经有了一个公认的答案,但我还想展示一下如何使用\uuu.chain()
方法实现这一点:
_.chain(SimpleWeapons)
.omit('properties')
.sample()
.get('Name', '') // The extra '' is in case the .Name property is undefined.
.value();
我不知道你在问什么。它看起来就像是。.sampleSize(simplewapons,1)
会给你想要的。或者,如果您只需要密钥,\u sampleSize(\uu.keys(simplewapons),1)
。如果这是不对的,你能举个例子,说明你到底想从哪里得到回报吗?@CRice,如果不清楚的话,很抱歉。例如,我想检索Club的名称:
属性,因此“Club”是一个字符串。当前equipment.startingwarms=(uu.sampleSize(classes.Bard.startingwarms,1))代码>返回一个objectI,我不确定你在问什么。它看起来就像是。.sampleSize(simplewapons,1)
会给你想要的。或者,如果您只需要密钥,\u sampleSize(\uu.keys(simplewapons),1)
。如果这是不对的,你能举个例子,说明你到底想从哪里得到回报吗?@CRice,如果不清楚的话,很抱歉。例如,我想检索Club的名称:
属性,因此“Club”是一个字符串。当前equipment.startingwarms=(uu.sampleSize(classes.Bard.startingwarms,1))代码>返回一个工作完美的对象,完全忘记了我可以使用点符号访问属性!非常感谢。很好,t