Javascript 无法访问对象';s属性-对象
我正在开发一个discord机器人,当时我正在发出“帮助”命令。我首先有一个commands数组,如果他们需要特定命令的帮助,我必须添加比我想要的更多的代码行。我想知道我是否可以像这样在我的物体里面放一个物体:Javascript 无法访问对象';s属性-对象,javascript,node.js,javascript-objects,discord.js,Javascript,Node.js,Javascript Objects,Discord.js,我正在开发一个discord机器人,当时我正在发出“帮助”命令。我首先有一个commands数组,如果他们需要特定命令的帮助,我必须添加比我想要的更多的代码行。我想知道我是否可以像这样在我的物体里面放一个物体: const commands1 = { coinflip: { usage: prefix + "coinflip", description: `Flip a coin then guess what it landed on.` }
const commands1 = {
coinflip: {
usage: prefix + "coinflip",
description: `Flip a coin then guess what it landed on.`
}
diceroll: {
usage: prefix + "diceroll (number)",
description: `Roll a die and guess what it lands on`
}
};
或者我必须做点别的,因为当我做的时候
for(var name in commands1){
embed.addField("Command:", name)
}
这将列出所有可用的命令。但是,我无法访问用法或说明,我尝试了以下操作:
.addField("Usage:", name.usage)
.addField("Description:", name.description)
(它说未定义)我访问它是错误的还是我不能将对象放入对象中。对不起,我对这个比较陌生:)谢谢。我找到了那个名字。是literal,它认为我正在试图访问commands1.name,而我需要commands1.coinflip。所以我就这么做了
console.log(commands1.coinflip.usage)
我发现了那个名字。是literal,它认为我正在试图访问commands1.name,而我需要commands1.coinflip。所以我就这么做了
console.log(commands1.coinflip.usage)
您正在循环中为…使用
,循环将遍历数组的索引。但真正的情况是你有对象
。因此,在这种情况下,我建议您:
const命令s1={
coinflip:{
用法:前缀+“coinflip”,
描述:`抛一枚硬币,然后猜猜它落在什么上`
}
掷骰子:{
用法:前缀+“掷骰子(数字)”,
描述:`掷骰子,猜猜它落在什么地方`
}
};
常量键=对象键(commands1);//#输出:[“硬币翻转”、“骰子滚动”]
对于(让钥匙中的钥匙){
embed.addField(“命令:”,commands1[key]。用法);
}
您正在使用for…in
循环,循环遍历数组的索引。但真正的情况是你有对象
。因此,在这种情况下,我建议您:
const命令s1={
coinflip:{
用法:前缀+“coinflip”,
描述:`抛一枚硬币,然后猜猜它落在什么上`
}
掷骰子:{
用法:前缀+“掷骰子(数字)”,
描述:`掷骰子,猜猜它落在什么地方`
}
};
常量键=对象键(commands1);//#输出:[“硬币翻转”、“骰子滚动”]
对于(让钥匙中的钥匙){
embed.addField(“命令:”,commands1[key]。用法);
}
别担心自己是新手,我们都是从某个地方开始的
你的新手问题可能比我的好
const commands1 = {
coinflip: {
usage: prefix + "coinflip",
description: `Flip a coin then guess what it landed on.`
},
/* Added a missing , above */
diceroll: {
usage: prefix + "diceroll (number)",
description: `Roll a die and guess what it lands on`
}
};
for(var name in commands1){
embed.addField("Command:", name);
console.log(commands1[name].usage);
console.log(commands1[name].description); /* You can Use your index to directly access the object thru the parent object. */
}
别担心自己是新手,我们都是从某个地方开始的
你的新手问题可能比我的好
const commands1 = {
coinflip: {
usage: prefix + "coinflip",
description: `Flip a coin then guess what it landed on.`
},
/* Added a missing , above */
diceroll: {
usage: prefix + "diceroll (number)",
description: `Roll a die and guess what it lands on`
}
};
for(var name in commands1){
embed.addField("Command:", name);
console.log(commands1[name].usage);
console.log(commands1[name].description); /* You can Use your index to directly access the object thru the parent object. */
}
如果您是硬编码coinflip,您应该使用点表示法。如果将其作为变量传递(例如name
),则可以使用查找语法(例如commands1[name].usage)进行查找。如果要硬编码,则应使用点表示法。如果您将其作为变量传递(例如,name
),则可以使用查找语法(例如commands1[name]。用法)仅供参考:我的答案与上面Jai的答案相同。。。但是,在资源上更容易一点+更好的性能。我不会在内存中放置不必要的数据(例如:键)。而对于这个简单的示例。。。任何一种解决方案都非常有效-当解决方案扩展时。。。少就是多。仅供参考:我的答案看起来和上面Jai的一样。。。但是,在资源上更容易一点+更好的性能。我不会在内存中放置不必要的数据(例如:键)。而对于这个简单的示例。。。任何一种解决方案都非常有效-当解决方案扩展时。。。少即是多。谢谢,我所拥有的一切都很好,我只使用for循环查看命令名,这样它就可以列出所有命令。我查找他们输入的特定命令的部分只是commands1[commandname]。用法而且它工作起来很有魅力,我删除了不少代码行。谢谢,它与我所拥有的非常好,我只使用for循环查看命令名,这样它就可以列出所有命令。我查找他们输入的特定命令的部分只是commands1[commandname]。用法而且它工作起来很有魅力,我删除了不少代码行。