2017-05-17 9 views
1

htmlで配列を印刷しようとしていますが、forループが機能しません。私はdataArrayNewの長さを取得しようとしていますが、私のforループが追加されていない場所に戻ってきません。もし私がconsole.log(dataArrayNew.title);なら、私は正しい結果を見ることができます。私はまた、私のブラウザコンソールの印刷画面を添付しています。あなたがオブジェクトであり、オブジェクトがプロパティlengthを持っていない結果JSON.parseに配列からdataArrayNewを再割り当てされているので、あなたがlengthプロパティを見ることができない理由 below is my code -forループがjsマップ関数で機能しない

var dataArrayNew = []; 

function fetch_section_data_1(){ 

var keys = Object.keys(localStorage).filter(function(key) { 
    return /^section\d+$/.test(key); 
}); 

var dataArray = keys.map(function(key) { 
    dataArrayNew = JSON.parse(localStorage.getItem(key)); 
    console.log(dataArrayNew.title); 
    //lengtharray = dataArrayNew.length; 
    //console.log(lengtharray); 
    //return JSON.parse(localStorage.getItem(key)); 
}); 

var $table = $("<table></table>"); 
for(i=0;i<dataArrayNew.length;i++){ 
    var array_no = dataArrayNew[i]; 
    var $line = $("<tr></tr>"); 
    $line.append($("<td></td>").html(array_no.title)); 
    $table.append($line); 
    console.log(dataArrayNew.title); 
} 

$table.appendTo(document.body); 

} 
+0

あなたの '.map()'コールバックには 'return'文がありません。そうすべき。 '.map()'の後に 'console.log(dataArray)'を追加すると、その理由がわかります。 – nnnnnn

+0

返信文のコメントを外して、提案した内容を追加しました。私はこれを私のコンソールで見ることができます - 'https://www.dropbox.com/s/nexj0maebb3xm35/Screenshot%202017-05-17%2008.36.13.png?dl = 0'でもループが効かない場合 – user2828442

+0

タイトルをクリックすると、配列から対応するIDを取得するにはどうすればいいですか – user2828442

答えて

1

理由があります。代わりにdataArrayNewの価値を再割り当てを、なぜあなたはそうのように、それにJSON.parse(localStorage.getItem(key))の値をプッシュしていない:

dataArrayNew.push(JSON.parse(localStorage.getItem(key))); 

だからあなたのコードは次のようになります。

var dataArrayNew = []; 
 

 
function fetch_section_data_1(){ 
 

 
    var keys = Object.keys(localStorage).filter(function(key) { 
 
    return /^section\d+$/.test(key); 
 
    }); 
 

 
    var dataArray = keys.map(function(key) { 
 
    var currIn = JSON.parse(localStorage.getItem(key)); 
 
    console.log(currIn); 
 
    // push data to dataArrayNew 
 
    dataArrayNew.push(currIn); 
 
    //lengtharray = dataArrayNew.length; 
 
    //console.log(lengtharray); 
 
    //return JSON.parse(localStorage.getItem(key)); 
 
    }); 
 

 
    var $table = $("<table></table>"); 
 
    
 
    // You should be able to get the length here now 
 
    for(var i = 0; i < dataArrayNew.length; i++){ 
 
     var array_no = dataArrayNew[i]; 
 
     var $line = $("<tr></tr>"); 
 
     $line.append($("<td></td>").html(array_no.title)); 
 
     $table.append($line); 
 
     console.log(dataArrayNew.title); 
 
    } 
 

 
    $table.appendTo(document.body); 
 

 
}

+0

似たようなことをしました。私はmap関数の後にdataArrayを使用しました。私はクリックしたタイトルのidをconsole.logでどうすればいいのですか? – user2828442

+0

その場合は 'console.log(currIn.title) 'となります –

+0

タイトルをクリックして対応するIDを取得する方法 – user2828442

関連する問題