我想要一个二维阵列转换为字符串,以便将其存储在localStorage的阵列英寸然而,也有一些是不对的代码,我无法确定:

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

有没有人有一个想法是什么我做错了吗?

至于什么是错的,由多维数组我的意思是阵列[0] [1]等。 当输入到本地存储,所有的“字串”被减少到是@,这意味着在@的另一侧还有阵列。

有帮助吗?

解决方案

什么东西是错的?当然,你天亚社说你的输入是什么,你所期望的,并且不需要的输出是什么?

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

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

其他提示

如今这很简单,只要:

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

JSON 是现在在现代标准浏览器。可以用它来“字符串”(转换为JSON字符串)和“分析”从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]);

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

你能告诉我们您所使用的输入,你会得到什么样的输出?

您的代码似乎好工作对我来说,在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);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top