我试图在JavaScript中将一串整数分割成一个数组。
原来我有:
m.rows[7] = new Array (8,11);
我正在改为:
var nearby = nearby.split(",");
m.rows[7] = new Array (nearby);
(并在我的关卡编辑器中设置一个用逗号分隔的相应整数的变量。当我将“near [0]”打印到控制台时,我得到'8'。当我打印“near [1]”到控制台我得到11)
然而,我有这个代码,我尝试将数组中的一个元素与另一个数组中的元素匹配:
for (var i = m.rows[id].length-1; i >= 0; i--) {
// If the loop finds an element ID that matches the ID of the last element in the path array, do this:
console.log('test nearby 2: ' + m.rows[id][i]);
if (m.rows[id][i] == this.path_array[this.path_array.length-1].id) {
// Loop through the one array
for (var j = all_nodes.length-1; j >= 0; j--){
// If the ID of one of one of these entities matches the id of the instance that was just clicked
if (all_nodes[j].id == id) {
// Activate that node:
all_nodes[j].active = true;
}
}
break;
}
当我实际上将“8,11”手动放入上面的数组时,上面的效果非常好。但是,当我尝试使用“附近”时,我将其拆分为数组,但事实并非如此。并在上面“测试附近2”打印到控制台,当我使用“附近”“8,11”打印时。当我手动输入“8,11”到该数组时,我得到“11”。
我对JavaScript很陌生,所以我可能会遗漏一些非常明显的东西 - 任何人都可以解释一下吗?
谢谢!
答案 0 :(得分:1)
nearby
已经是一个数组。没有理由打电话给new Array(anArray)
。事实上,你不应该因为这不符合你的想法。
编辑:
这是一个说明问题的小提琴。请注意,数组中的第一个元素实际上是一个包含两个元素的数组,而不仅仅是第一个元素。
答案 1 :(得分:1)
这不是数组如何工作的。在new Array(8, 11)
中,8
和11
是参数。在new Array(nearby)
中,nearby
是一个参数。然而,为了实现您所需的功能,它非常简单; nearby
已经是一个数组,所以只需指定它:
m.rows[7] = nearby;
或者,如果类型困扰你:
m.rows[7] = [parseInt(nearby[0], 10), parseInt(nearby[1], 10)];
请注意,我在这里使用了数组文字语法[]
。 [a, b]
基本上等同于new Array(a, b)
,出于各种原因,您应尽可能使用文字语法。