我正在尝试将二维数组转换为字符串,以便将其存储在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'都被缩减为@,暗示@的另一边还有数组。
答案 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);