Javascript 如何在Node.js中声明和使用map/dictionary?
有没有可能是node.jsJavascript 如何在Node.js中声明和使用map/dictionary?,javascript,node.js,Javascript,Node.js,有没有可能是node.js var LANGUAGE = { LANG1: 'Language 1', LANG2 'Language 2' } var TARGET = { TARG1: { LANG1: 'target 1 in lang 1', LANG2: 'target 1 in lang 2' }, TARG2: { LANG1: 'target 2 in lang 1', LANG2: 'target 2 in lang 2' } } var A
var LANGUAGE = {
LANG1: 'Language 1',
LANG2 'Language 2'
}
var TARGET = {
TARG1: { LANG1: 'target 1 in lang 1', LANG2: 'target 1 in lang 2' },
TARG2: { LANG1: 'target 2 in lang 1', LANG2: 'target 2 in lang 2' }
}
var ACTION = {
ACT1: { LANG1: 'action 1 in lang 1', LANG2: 'action 1 in lang 2' },
ACT2: { LANG1: 'action 2 in lang 1', LANG2: 'action 2 in lang 2' }
}
var currentLanguage = LANGUAGE.LANG1;
var currentTarget = TARGET.TARG2;
var currentAction = ACTION.ACT1;
var message = 'You have successfully performed ' + currentAction[currentLanguage] + ' on ' + currentTarget[currentLanguage];
console.log(message);
我不确定在上面的源代码中,语言.LANG1和target1:{LANG1:等之间是否有任何关系
=============在VSCode中运行此操作后使用结果进行更新========
You have successfully performed undefined on undefined
您应该阅读更多有关javascript点括号表示法的信息。
在您的情况下,
currentAction[currentLanguage]
将是currentAction['Language 1']
,并且在currentAction
对象中没有键为'LANG1'LANG1'中的操作1',LANG2'LANG2'中的操作1'
的值currentAction['LANG1']
或currentAction.LANG1
将返回所需的值
ES6具有动态键语法,您可以在对象文本中为键使用变量{[LANGUAGE.LANG1]:'some value'}
您应该阅读有关javascript点括号符号的更多信息。在您的情况下,
currentAction[currentLanguage]
将是currentAction['Language 1']
,并且在currentAction
对象中没有键为'LANG1'LANG1'中的操作1',LANG2'LANG2'中的操作1'
的值currentAction['LANG1']
或currentAction.LANG1
将返回所需的值
ES6具有动态键语法,您可以在对象文本中为键使用变量{[LANGUAGE.LANG1]:'some value'}
绝对正确。您的问题是,您的语言对象中的值必须是其他对象中的键,因此
var LANGUAGE = {
LANG1: 'LANG1',
LANG2: 'LANG1'
}
(您发布的代码中还缺少第二个冒号。)
使用上面的打印
您已在lang 1中的目标2上成功执行了lang 1中的操作1
当然,是的。你的问题是你的语言对象中的值必须是其他对象中的键,所以
var LANGUAGE = {
LANG1: 'LANG1',
LANG2: 'LANG1'
}
(您发布的代码中还缺少第二个冒号。)
使用上面的打印
您已在lang 1中的目标2上成功执行了lang 1中的操作1
多亏了31piy
我找到了一种方法,也许不是最好的
var LANGUAGE = {
LANG1: 'Language 1',
LANG2: 'Language 2'
}
var TARGET = {
TARG1: new Map(),
TARG2: new Map()
}
var ACTION = {
ACT1: new Map(),
ACT2: new Map()
}
TARGET.TARG1.set(LANGUAGE.LANG1, 'target 1 in lang 1');
TARGET.TARG1.set(LANGUAGE.LANG2, 'target 1 in lang 2');
TARGET.TARG2.set(LANGUAGE.LANG1, 'target 2 in lang 1');
TARGET.TARG2.set(LANGUAGE.LANG2, 'target 2 in lang 2');
ACTION.ACT1.set(LANGUAGE.LANG1, 'action 1 in lang 1');
ACTION.ACT1.set(LANGUAGE.LANG2, 'action 1 in lang 2');
ACTION.ACT2.set(LANGUAGE.LANG1, 'action 2 in lang 1');
ACTION.ACT2.set(LANGUAGE.LANG2, 'action 2 in lang 2');
var currentLanguage = LANGUAGE.LANG1;
var currentTarget = TARGET.TARG2;
var currentAction = ACTION.ACT1;
var message = 'You have successfully performed ' + currentAction.get(currentLanguage) + ' on ' + currentTarget.get(currentLanguage);
console.log(message);
结果如预期:)
多亏了31piy
我找到了一种方法,也许不是最好的
var LANGUAGE = {
LANG1: 'Language 1',
LANG2: 'Language 2'
}
var TARGET = {
TARG1: new Map(),
TARG2: new Map()
}
var ACTION = {
ACT1: new Map(),
ACT2: new Map()
}
TARGET.TARG1.set(LANGUAGE.LANG1, 'target 1 in lang 1');
TARGET.TARG1.set(LANGUAGE.LANG2, 'target 1 in lang 2');
TARGET.TARG2.set(LANGUAGE.LANG1, 'target 2 in lang 1');
TARGET.TARG2.set(LANGUAGE.LANG2, 'target 2 in lang 2');
ACTION.ACT1.set(LANGUAGE.LANG1, 'action 1 in lang 1');
ACTION.ACT1.set(LANGUAGE.LANG2, 'action 1 in lang 2');
ACTION.ACT2.set(LANGUAGE.LANG1, 'action 2 in lang 1');
ACTION.ACT2.set(LANGUAGE.LANG2, 'action 2 in lang 2');
var currentLanguage = LANGUAGE.LANG1;
var currentTarget = TARGET.TARG2;
var currentAction = ACTION.ACT1;
var message = 'You have successfully performed ' + currentAction.get(currentLanguage) + ' on ' + currentTarget.get(currentLanguage);
console.log(message);
结果如预期:)
尝试将其保存在一个文件中,并使用
node
运行它。我向您保证node
比本网站上的任何人都更了解Javascript。如果您遇到理解困难的问题,包括您不清楚的错误,这将成为一个很好的问题。NodeJS中没有任何东西像字典一样。您可能需要t阅读和API。@ctt我已更新帖子。没有错误,但遗憾的是存在未定义的值。请尝试将其保存在文件中,并使用node
运行。我向您保证node
比此网站上的任何人都更了解Javascript。如果遇到理解困难的问题,包括你不清楚的错误会把这变成一个很好的问题。NodeJS中没有字典。你可能想阅读和API。@ctt我已经更新了帖子。没有错误,但遗憾的是有未定义的值。