Arrays 当我运行console.log(portfoliosArray)时,它返回一个数组还是四个数组?

Arrays 当我运行console.log(portfoliosArray)时,它返回一个数组还是四个数组?,arrays,json,object,handlebars.js,this,Arrays,Json,Object,Handlebars.js,This,它不是从JSON文件返回一个对象数组,而是返回一个包含4个对象的4个数组?为什么?JSON文件名为portfolions.JSON 'use strict'; var portfolioArray = []; function Portfolio (portfoliosDataObj) { this.title = portfoliosDataObj.title; this.body = portfoliosDataObj.body; this.img = portf

它不是从JSON文件返回一个对象数组,而是返回一个包含4个对象的4个数组?为什么?JSON文件名为portfolions.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文件-添加以供参考

[{
  "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 ipsum dolor sit amet,是一位杰出的献身者。leo在tellus facilisis的位置,我的位置是同一位置。埃尼安·维尼那提斯,亨德雷特·塞姆佩尔·埃姆佩尔·亨德雷特,奥迪奥·迪亚姆·奥迪奥调味品奥迪奥,艾德·萨吉提斯·洛雷姆·泰勒斯·韦尔莫里斯(sagittis lorem tellus vel mauris)。我是内克人,我是拉西尼亚人,我是非智人。整数id hendrerit nulla,vitae tristique tortor。埃尼安在《丘比特·马萨》中的名言。发酵木瓜。马来苏阿达葡萄。Maecenas scelerisque facilisis mattis。

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

{
  "title": "CodeFellows/Code201",
  "body": "content1",
  "img": ""
}
是一个javascript对象,而不是数组(请注意大括号{})。
外部是一个数组。(请注意方括号[])


您可以通过执行
console.log(公文包[0])来访问对象

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

向我们展示json文件的内容。@gaganshera添加了fileyes,但当我使用console.log(portfolioArray)时,它返回=>[Array(4)、Array(4)、Array(4)、Array(4)、Array(4)],每个都包含四个对象。正如我在回答中提到的,像
console.log(公文包[0])那样操作在获取数据之后,在foreach循环之前立即执行console.log。是。该文件返回4个对象,因为它包含4个对象。但是,我用于打印到页面的数组包含四个单独的数组,不会打印到页面。您的foreach中有一个拼写错误<代码>portfolioArray.push(组合)应该是
portfolioArray.push(公文包)很高兴我能帮上忙,欢迎来到Stack Overflow。如果此答案或任何其他答案解决了您的问题,请将其标记为已接受