试图在Javascript中加入二维数组

时间:2010-01-06 20:52:33

标签: javascript arrays multidimensional-array implode

我正在尝试将二维数组转换为字符串,以便将其存储在localStorage数组中。但是,我无法识别的代码存在问题:

for(x in array) {
    if(array[x] instanceof Array) {
        array[x] = array[x].join("`");
    }
}
var string = array.join("@");
localStorage[key] = string;

有没有人知道我做错了什么?

至于什么是错的,通过多维数组我的意思是数组[0] [1]等。 当输入到localStorage时,所有'string'都被缩减为@,暗示@的另一边还有数组。

5 个答案:

答案 0 :(得分:11)

现在这很简单:

[[1,2],[3,4]].map(e => e.join(':')).join(';'); // 1:2;3:4

答案 1 :(得分:5)

什么是错的?当然,你可以说你的输入是什么,你期望什么,以及不希望的输出是什么?

至少,如果array确实是一个数组,则不应使用for..in loop。这是对象。只需使用

for (var i=0, l=array.length; i<l; i++){
    if (array[i] instanceof Array){
        array[i] = array[i].join("`");
    }
}

答案 2 :(得分:1)

Javascript没有二维数组。它只有不规则的数组。您的代码适合我,以获得适当的输入:

array = [[1,2],[3,4]];
for(x in array) {
    if(array[x] instanceof Array) {
        array[x] = array[x].join("`");
    }
}
var string = array.join("@");
alert(string);

输出:

1`2@3`4

您能告诉我们您正在使用的输入和输出的输出吗?

答案 3 :(得分:1)

JSON现在已成为现代浏览器的标准配置。你可以用它来&#34; stringify&#34; (转换为JSON字符串)和&#34;解析&#34;从JSON字符串转换。

您可以使用JSON.stringify函数将2D数组转换为JSON并将其粘贴到localStorage中。然后,您可以使用JSON.parse将其转换回数组。

var my2DArray = [[1, 2, 3], [4, 5, 6]];
var stringified = JSON.stringify(my2DArray);
localStorage[key] = stringified;

var backToOriginal = JSON.parse(localStorage[key]);

答案 4 :(得分:0)

你的代码似乎对我有用,在Firefox中进行测试。

在特定浏览器中失败了吗?

var array = [
["a","b"],
["c","d","e"]];
for(x in array) {
    if(array[x] instanceof Array) {
        array[x] = array[x].join("`");
    }
}
var string = array.join("@");
console.log(string);