Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在Node.js中声明和使用map/dictionary?_Javascript_Node.js - Fatal编程技术网

Javascript 如何在Node.js中声明和使用map/dictionary?

Javascript 如何在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

有没有可能是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 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);
我不确定在上面的源代码中,语言.LANG1target1:{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我已经更新了帖子。没有错误,但遗憾的是有未定义的值。