2017-05-17 5 views
1

Ich versuche Array in HTML zu drucken, aber meine for-Schleife funktioniert nicht. Ich versuche, die Länge von dataArrayNew zu erhalten, aber es kommt nicht zurück, wo meine for-Schleife hinzugefügt wird. Wenn ich console.log(dataArrayNew.title); bin, kann ich das korrekte Ergebnis sehen. Ich befestige auch den Druckbildschirm meiner Browserkonsole. below is my code -For-Schleife funktioniert nicht mit js Kartenfunktion

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

Ihr '.map()' Callback hat keine 'return' Anweisung. Es sollte. Fügen Sie 'console.log (dataArray)' nach der '.map()' hinzu und Sie werden sehen, warum. – nnnnnn

+0

Ich habe meine Rückgabebestätigung unkommentiert und hinzugefügt, was Sie vorgeschlagen haben, ich kann das in meiner Konsole sehen - 'https://www.dropbox.com/s/nexj0maebb3xm35/Screenshot%202017-05-17%2008.36.13.png?dl = 0' aber immer noch für Schleife funktioniert nicht – user2828442

+0

ok es funktioniert, wenn ich auf den Titel klicken, wie kann ich seine entsprechende ID aus Array, schlagen Sie bitte – user2828442

Antwort

1

Der Grund, warum Sie nicht die length Eigenschaft sehen können, ist, weil Sie dataArrayNew aus einem Array zu einem Ergebnis JSON.parse neu zuweisen, die ein Objekt ist, und Objekte haben nicht die Eigenschaft length. Anstatt den Wert von dataArrayNew der Neuzuordnung, warum Sie nicht drücken Sie den Wert von JSON.parse(localStorage.getItem(key)), um es, wie so:

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

So Ihr Code wie folgt aussehen sollte:

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

Ja, ich habe etwas ähnliches, ich habe nur DataArray selbst nach der Kartenfunktion verwendet, Wie kann ich console.log die ID des Titels Ich klickte – user2828442

+0

In diesem Fall wäre es 'console.log (currIn.title)' –

+0

Wie Sie hinzufügen, klicken Sie auf Titel, um die entsprechende ID – user2828442