Javascript:无法修改循环内部声明的数组

时间:2015-08-11 22:04:13

标签: javascript arrays loops

var myArray = "AAAAA";
    for(var i = 0; i < ["a", "b"].length; i++)
    {
        alert(myArray);
        var myVar = "C"+myArray[1]+"C";
        myArray[1] = "K";
        //myArray.splice(3,1);
    }

随着splice的注释,它只会提醒AAAAA。
通过接头,它会在第一时间向AAAAA发出警报,然后再不会发出警报。 (Javascript在碰到拼接后停止工作)

我不知道出了什么问题。 显然,可以从循环内访问数组,但为什么不能修改它?

欢迎任何帮助,谢谢男生和女生!

5 个答案:

答案 0 :(得分:2)

尝试:var myArray = ["AAAAA"]; 这将myArray声明为数组而不是字符串。

答案 1 :(得分:2)

myArray不是Array,因此会引发Uncaught TypeError

假设您打算myArray['A', 'A', 'A', 'A', 'A'],则可以使用split()方法:

//var myArray = 'AAAAA'; // This is not an Array did you mean:
var myArray = 'AAAAA'.split('');

//var myVar; // Should declare this here

// What is the purpose of i < ['a', 'b'].length? why not i < 2?
for(var i = 0; i < ['a', 'b'].length; i++) {
    alert(myArray.join()); // Turn Array back into a string

    /** 
     *  This has function scope, not block scope (declare above)
     *  (I'm guessing you use this value later?)
     */
    var myVar = 'C' + myArray[1] + 'C';

    myArray[1] = 'K';
    myArray.splice(3,1);
}

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split

答案 2 :(得分:1)

如果要将字符串作为字符数组处理:

var myArray = "AAAAA".split('')

答案 3 :(得分:1)

正如jdawg所说myArray不是数组是一个字符串。代码停止,因为它在String中不存在尝试调用函数(splice)时抛出错误。

您可以在循环中修改数组。

在数组中转换字符串的其他方法是

 var myArray = myString.split ('')

答案 4 :(得分:0)

问题是myArray不是数组,请尝试

var myArray = ["AAAAA"];
    for(var i = 0; i < ["a", "b"].length; i++)
    {
        alert(myArray);
        var myVar = "C"+myArray[1]+"C";
        myArray[1] = "K";
        myArray.splice(3,1);
    }