试图加入JavaScript中的二维数组
-
19-09-2019 - |
题
我想要一个二维阵列转换为字符串,以便将其存储在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);
不隶属于 StackOverflow