Javascript For循环不使用js映射函数
我试图用html打印数组,但我的for循环不起作用。我试图获取Javascript For循环不使用js映射函数,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我试图用html打印数组,但我的for循环不起作用。我试图获取dataArrayNew的长度,但它不会返回添加for循环的位置。如果iconsole.log(dataArrayNew.title),我可以看到正确的结果。我还附加了浏览器控制台的打印屏幕。 var-dataArrayNew=[]; 函数fetch_section_data_1(){ var keys=Object.keys(localStorage).filter(函数(键){ 返回/^section\d+$/.test(键);
dataArrayNew
的长度,但它不会返回添加for循环的位置。如果iconsole.log(dataArrayNew.title)代码>,我可以看到正确的结果。我还附加了浏览器控制台的打印屏幕。
var-dataArrayNew=[];
函数fetch_section_data_1(){
var keys=Object.keys(localStorage).filter(函数(键){
返回/^section\d+$/.test(键);
});
var dataArray=keys.map(函数(键){
dataArrayNew=JSON.parse(localStorage.getItem(key));
console.log(dataArrayNew.title);
//lengtharray=dataArrayNew.length;
//控制台日志(纵向);
//返回JSON.parse(localStorage.getItem(key));
});
var$table=$(“”);
对于(i=0;i无法看到length
属性的原因是,您正在将dataArrayNew
从数组重新分配到结果JSON。parse
是一个对象,而对象没有length
属性。与其重新分配dataArrayNew
的值,不如推送该值将JSON.parse(localStorage.getItem(key))
添加到它,如下所示:
dataArrayNew.push(JSON.parse(localStorage.getItem(key)));
因此,您的代码应该如下所示:
var-dataArrayNew=[];
函数fetch_section_data_1(){
var keys=Object.keys(localStorage).filter(函数(键){
返回/^section\d+$/.test(键);
});
var dataArray=keys.map(函数(键){
var currIn=JSON.parse(localStorage.getItem(key));
console.log(currIn);
//将数据推送到dataArrayNew
dataArrayNew.push(currIn);
//lengtharray=dataArrayNew.length;
//控制台日志(纵向);
//返回JSON.parse(localStorage.getItem(key));
});
var$table=$(“”);
//你现在应该可以在这里得到长度了
对于(var i=0;i }
您的.map()
回调没有return
语句。它应该在.map()之后添加console.log(dataArray)
你会明白原因的。我取消了return语句的注释并添加了你建议的内容,我可以在我的控制台中看到-https://www.dropbox.com/s/nexj0maebb3xm35/Screenshot%202017-05-17%2008.36.13.png?dl=0
但仍适用于循环不工作OK,如果我单击标题,如何从数组中获取其相应id,请ggestYeah我做了类似的事情,我只是在映射函数之后使用了dataArray本身,我如何才能控制台.log我单击的标题的id在这种情况下,它将是console.log(currIn.title)
如何添加单击标题以获得相应的id你可能需要一个事件处理程序。单击MDN后查找:
dataArrayNew.push(JSON.parse(localStorage.getItem(key)));