質問

私はのlocalStorage配列にそれを格納するための文字列に2次元配列に変換しようとしています。しかし、私は識別することはできません。このコードに問題があるます:

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

誰もが私が間違ってやっているのアイデアを持っていますか?

間違っている何のためとして、多次元配列で、私は配列を意味する[0] [1]など localStorageへの入力は、全ての「文字列が」に低下するとアレイがまだある@の反対側に意味、@である。

役に立ちましたか?

解決

間違っている何かは何ですか?きっと、あなたが期待したもの、あなたの入力が何であるかと言うと、どのような望ましくない出力があるUCAN?

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にあなたの2次元配列に変換し、JSON.stringifyでそれを固執する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が2次元配列を持っていません。それだけでボロボロの配列を持っています。あなたのコードは、適切な入力のために私のために動作します:

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