13

localStorage 配列に格納するために、2 次元配列を文字列に変換しようとしています。ただし、このコードには特定できない問題があります。

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

誰かが私が間違っていることを知っていますか?

何が問題なのかというと、多次元配列とは array[0][1] などを意味します。

4

5 に答える 5

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("`");
    }
}
于 2010-01-06T21:01:21.790 に答える
2

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]);
于 2015-02-27T23:32:19.197 に答える
1

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

使用している入力と得られる出力を教えてください。

于 2010-01-06T20:59:07.247 に答える
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);
于 2010-01-06T20:58:26.850 に答える