将数组的每个字符串的每个字符存储到新的2d数组中

时间:2016-06-12 17:03:27

标签: javascript

我打算以[[],[],[] ...]的格式将字符串拆分成jd格式的二维数组,每个字对应外部数组的每个索引,每个字对应的每个字母对应到内部数组的索引并将数组的内容记录到控制台中。代码如下:

function titleCase(str) {
    var str_to_words=str.split(" ");
    var str_to_letters;
    for(var i=0;i<str_to_words.length;i++)
    {
        str_to_letters[i]=str_to_words[i].split();

    }
    return str_to_letters;
}

console.log(titleCase("I'm a little tea pot"));

但是我收到一个错误:&#34; script.js:6未捕获TypeError:无法设置属性&#39; 0&#39;未定义&#34;有人可以帮忙吗?我是javascript语法的新手。

3 个答案:

答案 0 :(得分:0)

您需要将str_to_letters定义为array:var str_to_letters = [];

function titleCase(str) {
    var str_to_words=str.split(" ");
    var str_to_letters = [];
    for(var i=0;i<str_to_words.length;i++)
    {
        str_to_letters[i]=str_to_words[i].split();

    }
    return str_to_letters;
}

答案 1 :(得分:0)

在Javascript中,var最初将被视为对象(键,值)对。

因此,为了表示var是一个数组,您必须明确声明它。

var str_to_letters = new Array();

var str_to_letters = [];

不带参数的Split方法只返回完整的Statement作为结果。

所以你必须指定拆分(&#39;&#39;);

所以固定的工作代码是以下

function titleCase(str) { 
var str_to_words=str.split(" "); 
var str_to_letters=[]; 
for(var i=0;i<str_to_words.length;i++) 
{ 
str_to_letters[i]=str_to_words[i].split(''); 
} 
return str_to_letters; 
} 
console.log(titleCase("I'm a little tea pot"));

https://jsfiddle.net/davidsekar/zL9mf7ss/2/

答案 2 :(得分:0)

重要的是 .split(''); 拆分没有任何返回字符串但分裂提供空字符串返回带字符的数组。

所以

'abc'.split() => 'abc'

但是

'abc'.split('') => ['a','b','c']

function titleCase(str) {
    var str_to_words=str.split(" ");
    var str_to_letters = [];
    var res = [];
    for(var i=0;i<str_to_words.length;i++)
    {
        str_to_letters[i]=str_to_words[i].split('');

    }
    return str_to_letters;
}

console.log(titleCase("I'm a little tea pot"));