将变量指定为 Javascript 中的数组目标(可变性?)

Specifying a variable as an array destination in Javascript ( mutability? )

我将在 Javascript 中填充 5 个数组,我填充的数组取决于“x”的值。我对这里的变量 usage/mutability 感到非常困惑。我的代码如下……

//Node arrays that hold the IDs of each node
nodeOne = [];
nodeTwo = [];
nodeThree = [];
nodeFour = [];
nodeFive = [];
var nodesButtonToNode = {pn_btn_1:"nodeOne", pn_btn_2:"nodeTwo", pn_btn_3:"nodeThree", pn_btn_4:"nodeFour", pn_btn_5:"nodeFive"};

x = "pn_btn_1"; 

nodesButtonToNode.x.push("I am supposed to go into nodeOne")

简而言之,如果 x = “pn_btn_1”,那么将通过在 nodesButtonToNode 中指定键来拉取需要填充的数组的值。在这种情况下,该数组将是 nodeOne。如果 x = “pn_btn_2”,那么需要添加的区域将是 nodeTwo。正如预期的那样,我收到了很多未定义的错误,我不确定我哪里出错了。

任何指针的许多 TIA

您应该使用以数组名称作为键的对象,然后您可以通过方括号 obj[var] 表示法访问它们:

//Node arrays that hold the IDs of each node
const nodes = {
  nodeOne: [],
  nodeTwo: [],
  nodeThree: [],
  nodeFour: [],
  nodeFive: []
};

var nodesButtonToNode = {
  pn_btn_1: "nodeOne",
  pn_btn_2: "nodeTwo",
  pn_btn_3: "nodeThree",
  pn_btn_4: "nodeFour",
  pn_btn_5: "nodeFive"
};

x = "pn_btn_1";

nodes[nodesButtonToNode[x]].push("I am supposed to go into nodeOne");

console.log(nodes);

您的 nodesButtonToNode 应该使用实际的数组而不是它们的名称。

var nodesButtonToNode = {
    pn_btn_1: nodeOne,
    pn_btn_2: nodeTwo,
    pn_btn_3: nodeThree,
    pn_btn_4: nodeFour,
    pn_btn_5: nodeFive
};

这样您就可以直接更新数组。

此外,x 的值不在您的映射中,它应该是 pn_btn_1

//Node arrays that hold the IDs of each node
nodeOne = [];
nodeTwo = [];
nodeThree = [];
nodeFour = [];
nodeFive = [];
var nodesButtonToNode = {
    pn_btn_1: nodeOne,
    pn_btn_2: nodeTwo,
    pn_btn_3: nodeThree,
    pn_btn_4: nodeFour,
    pn_btn_5: nodeFive
};


x = "pn_btn_1"; 

nodesButtonToNode[x].push("I am supposed to go into nodeOne");

console.log(JSON.stringify(nodeOne));

您的语法有一些错误,请查看示例

const nodeOne = [];
const nodeTwo = [];
const nodeThree = [];
const nodeFour = [];
const nodeFive = [];

const nodesButtonToNode = {
  pn_btn_1: nodeOne,
  pn_btn_2: nodeTwo,
  pn_btn_3: nodeThree,
  pn_btn_4: nodeFour,
  pn_btn_5: nodeFive
};

const x = "pn_btn_1"; 

nodesButtonToNode[x].push("I am supposed to go into nodeOne");

console.log(nodesButtonToNode);