【发布时间】:2016-08-14 15:46:32
【问题描述】:
我想根据某些要求检查某些按钮是否可以点击,但我什至无法使功能的启动工作。
我有这个对象数组。每个对象都是一个按钮,其中一些有要求。例如:要使故事可点击,它需要 10 个想法,所以 story.ideaReq = 10。要获得 grana,您需要有 1 个故事,所以 grana.storyReq = 1。
我的代码应该返回:
story ideaReq 10
即:
story.name = 故事,
req.name+'Req' = ideaReq 和
故事['ideaReq'] = 10
但它会返回:
story ideaReq undefined
如果我 console.log(story.ideaReq) 它可以完美运行,但我需要能够调用此函数(因为我将拥有比上述更多的对象)。
我错过了什么?
const numbers = [
time = {
'name': 'time',
'in': 0,
'val': 0
},
idea = {
'name': 'idea',
'in': 0,
'val': 10,
'time': 1
},
story = {
'name': 'story',
'in': 0,
'val': 1,
'time': 4,
'ideaReq': 10
},
grana = {
'name': 'grana',
'in': 0,
'val': 1,
'time': 1,
'storyReq': 1
}
];
var checkButton = (button, req) => {
let name = button.name,
prop = req.name + 'Req';
console.log(name, prop, name['prop']);
}
checkButton(story, idea);
【问题讨论】:
-
您的数组语法无效。数组包含用逗号分隔的条目,而不是名称/值对。您的语法有点像对象初始化器,但您使用的是
=,而您将使用:。所以const numbers = [ {name: 'time', in: 0, out: 0}, {/*...*/}];(请注意,我没有将属性名称放在任何引号中;您可以,如果您愿意,单引号或双引号都可以。)还要注意const和一个从 ES2015(又名“ES6”)开始,您使用的其他东西很少是新的,所以如果您不进行转译,它只能在最新的 JavaScript 引擎上工作。 -
或者你可以使用一个对象:
const numbers = {time: {name: 'time', in: 0, out: 0}, idea: {/*...*/} }; -
最后:你的问题中根本没有 JSON,所以我删除了标签。 function 标签也无关紧要。
-
语法错误,你可以在jsonlint.com验证你的javascript对象
标签: javascript variables object