Javascript映射返回未定义的,尽管(键、值)对已定义
我使用nodejs在linux终端上运行这个代码片段。虽然键、值对设置正确,但代码打印时未定义。对此问题有何解释或解决方法Javascript映射返回未定义的,尽管(键、值)对已定义,javascript,node.js,Javascript,Node.js,我使用nodejs在linux终端上运行这个代码片段。虽然键、值对设置正确,但代码打印时未定义。对此问题有何解释或解决方法 function trial() { var obj1 = {}; var obj2 = {}; obj1.fund = 1; obj1.target = 2; obj2.fund = 1; obj2.target = 2; states = []; states.push(obj1); states.
function trial() {
var obj1 = {};
var obj2 = {};
obj1.fund = 1;
obj1.target = 2;
obj2.fund = 1;
obj2.target = 2;
states = [];
states.push(obj1);
states.push(obj2);
actions = [1,2,3,4];
table = new Map();
for (var state of states) {
for (var action of actions) {
cell = {};
cell.state = state;
cell.action = action;
table.set(cell, 0);
}
}
var obj = {};
obj.state = states[1];
obj.action = actions[1];
console.log(table.get(obj));
}
试试这个。你可能会得到你所需要的。我做了一个小小的美化
function trial() {
var obj1 = {
fund: 1,
target: 2
},
obj2 = {
fund: 1,
target: 2
},
obj = {},
states = [
obj1, obj2
],
actions = [1,2,3,4],
table = new Map(),
cell
;
for (var state of states) {
for (var action of actions) {
cell = {};
cell.state = state;
cell.action = action;
table.set(cell, 0);
}
}
obj.state = states[1];
obj.action = actions[1];
return(obj);
//console.log(table.get(obj));
}
console.log(trial())
您需要原始对象引用来匹配tableMap中的键,让我们保留每个对象引用的新单元格来显示它 即使你有一个对象的深层克隆,要映射,它也不是同一个键 var obj1={}; var obj2={}; obj1.fund=1; obj1.target=2; obj2.fund=1; obj2.target=2; 国家=[]; states.pushobj1; states.pushobj2; 行动=[1,2,3,4]; 表=新地图; var objRefs=[]; var计数=0; 对于var状态{ 对于动作的var动作{ 单元格={}; cell.state=状态; cell.action=动作; table.setcell,count; objRefs.pushcell;//保留对象引用 计数++; } } 对于var i=0;i