2017-05-07 38 views
0

而不是返回一个对象数组,从JSON文件中提取,它返回一个包含4个对象的4个数组的数组?为什么? JSON文件名是portfolio.json。当我console.log(的portfolioArray)它返回一个数组或四个数组?

'use strict'; 

var portfolioArray = []; 

function Portfolio (portfoliosDataObj) { 
    this.title = portfoliosDataObj.title; 
    this.body = portfoliosDataObj.body; 
    this.img = portfoliosDataObj.img; 
} 

Portfolio.prototype.toHtml = function() { 
    var renderPortfolios = Handlebars.compile($('#portfolio-template').text()); 
    return renderPortfolios(this); 
    console.log(this); 
}; 

$.getJSON('/data/portfolios.json', function(portfolios) { 
    portfolios.forEach(function(portfoliosDataObject) { 
    var portfolio = new Portfolio(portfoliosDataObject); 
    portfolioArray.push(portfolios); 
    console.log(portfolios); 
    }); 
}); 

function print() { 
    portfolioArray.forEach(function(data) { 
    $('#portfolioSection').append(data.toHtml()); 
    }); 


} 

Portfolio(); 
print(); 

JSON文件 - 添加供参考。

[{ 
    "title": "CodeFellows/Code201", 
    "body": "content1", 
    "img": "" 
}, 
{ 
    "title": "CodeFellows/Code301", 
    "body": "lorem ipsum" 
}, 
{ 
    "title": "Upcoming Projects/Other interest", 
    "body": "lorem impsum", 
    "img": "/images/blog.jpg" 

}, 
{ 
    "title": "Illustrations", 
    "body": "lorem ipsum", 
    "img": "/images/portfolio.png" 
}] 

忽略需要更多的内容,是不是代码张贴.... Lorem存有悲坐阿梅德,consectetur adipiscing ELIT。 Etiam porttitor leo at tellus facilisis,id suscipit ipsum suscipit。 Aenean venenatis,quam semper efficitur hendrerit,diodi diam condimentum diodi,id sagittis lorem tellus vel mauris。 Cras enim neque,malesuada sit amet lacinia et,ullamcorper non sapien。 Integer id hendrerit nulla,简历tristique tortor。 Aenean in arcu eget massa pulvinar格言。 Aliquam dictum fermentum sapien id iaculis。 Ut malesuada varius lacinia。 Maecenas scelerisque facilisis mattis。

+0

向我们展示json文件的内容。 – gaganshera

+0

@ gaganshera添加文件 – Potluck

回答

0

该文件返回4 对象数组,而不是数组。

{ 
    "title": "CodeFellows/Code201", 
    "body": "content1", 
    "img": "" 
} 

是一个javascript对象,不是数组(注意大括号{})。
外一个是一个数组。 (注意方括号[])。

你可以做一个console.log(portfolios[0]);

+0

是的,但是当我console.log(portfolioArray)它返回包含四个对象的= [Array(4),Array(4),Array(4),Array(4)]。 – Potluck

+0

正如我在答案中所提到的那样,请在'foreach循环之前获取数据之后立即执行console.log(console.log(portfolio [0]);' – gaganshera

+0

)。 – gaganshera

0

的问题是,此代码获取的对象。您在portfolioArray中推送portfolios而不是portfolio。你也在做console.log的投资组合,这就是它显示4个数组的原因。我已经修复了代码。请让我知道这对你有没有用。

$.getJSON('/data/portfolios.json', function(portfolios) { 
    portfolios.forEach(function(portfoliosDataObject) { 
    var portfolio = new Portfolio(portfoliosDataObject); 
    portfolioArray.push(portfolio); 
    console.log(portfolio); 
    }); 
}); 
+0

谢谢!这样可行。 – Potluck

+0

很高兴我能提供帮助,欢迎来到Stack Overflow。如果此答案或任何其他人解决了您的问题,请将其标记为已接受 –

相关问题