将整数字符串拆分为数组 - 元素无法识别

时间:2012-03-05 18:51:36

标签: javascript arrays split

我试图在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很陌生,所以我可能会遗漏一些非常明显的东西 - 任何人都可以解释一下吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

nearby已经是一个数组。没有理由打电话给new Array(anArray)。事实上,你不应该因为这不符合你的想法。

编辑:

这是一个说明问题的小提琴。请注意,数组中的第一个元素实际上是一个包含两个元素的数组,而不仅仅是第一个元素。

http://jsfiddle.net/V7QLN/

答案 1 :(得分:1)

这不是数组如何工作的。在new Array(8, 11)中,811参数。在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),出于各种原因,您应尽可能使用文字语法。