当我在console.log(PortfolArray)中它返回一个数组或四个数组?

时间:2017-05-07 20:30:17

标签: arrays json object handlebars.js this

它不是返回一个对象数组,而是从JSON文件中提取,它返回一个包含4个对象的4个数组的数组?为什么? JSON文件名是Portfol.json。

'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 FILE - 添加以供参考。

[{
  "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"
}]

IGNORE需要更多内容而非代码才能发布.... Lorem ipsum dolor坐下来,精致的adipistur elit。 Etiam porttitor leo at tellus facilisis,id suscipit ipsum suscipit。 Aenean venenatis,quam semper efficitur hendrerit,odio diam condimentum odio,id sagittis lorem tellus vel mauris。 Cras enim neque,malesuada坐在amet lacinia et,ullamcorper non sapien。 Integer id hendrerit nulla,vitae tristique tortor。 Aenean在arcu eget massa pulvinar dictum。 Aliquam dictum fermentum sapien id iaculis。 Ut malesuada varius lacinia。 Maecenas scelerisque facilisis mattis。

2 个答案:

答案 0 :(得分:0)

该文件返回一个包含4个对象的数组,而不是数组。

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

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

您可以通过执行console.log(portfolios[0]);

来访问对象

答案 1 :(得分:0)

问题在于此代码。您正在portfolios而不是portfolioArray推送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);  
  });  
});