for循环不能使用js map函数

时间:2017-05-17 02:58:34

标签: javascript jquery arrays json

我正在尝试在html中打印数组,但我的for循环不起作用。我试图获得dataArrayNew的长度,但它不会返回我的for循环添加的位置。如果我console.log(dataArrayNew.title);,我能够看到正确的结果。我还附上浏览器控制台的打印屏幕。 below is my code -

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);

}

1 个答案:

答案 0 :(得分:1)

您无法看到length属性的原因是您将dataArrayNew从数组重新分配给作为对象的结果JSON.parse,并且对象没有属性{ {1}}。不要重新分配length的值,为什么不将dataArrayNew的值推送到它,如下所示:

JSON.parse(localStorage.getItem(key))

所以你的代码应该是这样的:

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