2014-05-12 4 views
0

로컬 저장소에 저장하는 여러 개의 큰 다차원 배열이 있습니다. 그들은 다음과 같이 :로컬 저장소에서 배열로드 : 결과가 배열이 아닙니다 - javascript

[[[-150],[0],[-650],0],[[-100],[0],[-650],0],[[-50],[0],[-650],0] ... ]

데이터는 '4D'데이터입니다. 이 '문자열'을 별도의 html로 다른 JS의 배열에로드하려고하면 배열처럼 작동하지 않습니다. 단지 문자열 일뿐입니다. 여기

이 (루프 중 하나가 작동하지 않은 이유는 확실하지) 나는 두 번째 JS에 다시 데이터를로드하는 방법은 다음과 같습니다 나는 배열에 "4D"정보를로드 한 후

var lay= new Array(); 

//for(var g=0;g>=9;g++) 
//{ lay[g] = localStorage.getItem("key" + g); 
// console.log(lay[g]); 
//} 
lay[0] = localStorage.getItem("key0"); 
lay[1] = localStorage.getItem("key1"); 
lay[2] = localStorage.getItem("key2"); 
//... more here 
lay[9] = localStorage.getItem("key3"); 

, 내가 당겨 정보 아웃이 기능을 사용하려면

var count=0; 
var len=0; 

for (y=0;y<=1;y++) 
{ console.log(lay[y]); 
count=1; 
len = lay[y].length; 

for (x=1;x<=len-1;x++) 
{ 
     Rx =  lay[y][count][0]; 
     Ry =  lay[y][count][1]; 
     Rz =  lay[y][count][2]; 
     Rcolor = lay[y][count][3]; 

내가 배열의 문자 길이를 얻을 코드 console.log(len);이 아닌 요소의 수에 이것을 추가하면. 어떻게 로컬 스토리지에서 데이터를 가져 와서 배열처럼 작동 할 수 있습니까? 포맷팅만으로도 배열처럼 동작 할 것이라고 생각했습니다.

배열로 다시 구문 분석해야합니까? 그렇다면 데이터를 다시 구문 분석하기 위해 더 간단한 형식으로 데이터를 출력해야한다고 생각합니다 ...

감사합니다.

for (var a=0;a<=14;a++) 
{ updateTemp(tStep + a); 

$("#temp tbody tr").each(function(i, v){ 
    data[i] = Array(); 
    $(this).children('td').each(function(ii, vv){ 
     data[i][ii] = $(this).text();  
     rows=ii; 
     cols=i; 
    }); 

}); 
    retval=""; 
for (var q=0;q<=cols;q++) 
{ 
    for (var w=0;w<=rows;w++) 
    { 
     var tempv = data[q][w]; 
     var tX = w*50 - 1000; 
     var tY = 1*50 - 50; 
     var tZ = q*50 - 1000; 
     if (tempv==-9){ 
      (dummy=q*w); 
     } 
     else {retval += tX +',' + tY + ',' + tZ + ',' + tempv + ',';}  
    } 
} 
    var kee = "key" + a; 
retval = retval.substring(0, retval.length-1); //this is to get rid of the last character which is an extra , 
window.localStorage.setItem(kee, retval);} 
+2

배열을 문자열로 직렬화하고 문자열을 저장 한 다음 회상시 쉽게 deserialzie하지 않으시겠습니까? –

+1

배열은 localStorage에 저장할 수없고 문자열 만 저장할 수 있으므로 .toString() 배열을 전달할 때 적용되고 다시 가져올 때 문자열입니다. 배열을 문자열로 변환하려면 JSON.stringify와 JSON.parse를 사용하여 다시 얻으십시오. – adeneo

+0

* "배열의 문자 길이가 아니라 요소의 수를 얻습니다."* "배열"로 참조하는 것은 실제로는 배열의 문자열 표현입니다. 이 값을 localstorage에 어떻게 추가하는지 확인해야합니다. –

답변

3

JSON을 검색 한 후 구문 분석, 저장하기 전에 배열을 인코딩 :

편집

는 여기에 내가 로컬 저장소를 만든 방법입니다.

localStorage.test = JSON.stringify([1,2,3]); 
console.log(JSON.parse(localStorage.test)); 
+0

내 출력 문자열에서 로컬 저장소로, 그냥 CSV 문자열로 지정할 수 있습니까? – Crimpy

+0

@Crimpy, 당신은'JSON' 대신'Array.join'과'String.split'을 사용할 수 있습니다. 다차원 배열을 다룰 때 JSON을 제안합니다. – Syntax

+0

배열에 데이터를 가져 오기 위해 html 테이블을 읽었습니다. 이 컨텍스트에서 JSON.strigify를 어떻게 사용하는지 잘 모르겠습니다. 위의 수정 내용을 참조하십시오. – Crimpy

-2

이것은 “Storing Objects in HTML5 localStorage”의 복제입니다. localstorage은 문자열 만 처리합니다. 거기에 제안 된 바와 같이, 저장하기 전에 배열을 JSON 문자열로 serialize하십시오.

+1

중복 된 것으로 생각되면 투표를 닫으십시오. –

관련 문제