上下文:使用Typescript处理Angular2应用程序。未遍历整个响应JSON
问题:
我得到从HTTP请求下面的反应。
content: [{entryId: 1357, currentAccountId: 893, entryDate: "2005-04-21T17:09:10Z", amount: 7927.5,…},…]
first: true
last: true
number: 0
numberOfElements: 112
size: 2000
sort: [,…]
totalElements: 112
totalPages: 1
我的目标是创建一个数组与entryDate的一部分。
这是我tryed实现这一点:
let dataDates = [];
for(let entry of this.data) {
dataDates.push(entry.entryDate.split('T').shift());
}
这导致了110项长,比原来少响应2的数组。我以为这是因为最后几个条目是相同的,并相互覆盖。所以我试过这个:
let dataDates = [];
for(let entry of this.data) {
let obj = { date: entry.entryDate.split('T').shift() };
let copy = Object.assign({}, obj);
dataDates.push(copy);
}
这导致了相同的数组。一个更聪明的同事建议这样做:
let dataDates: Array<{date: string}> = this.data.map(obj => {
return { date: obj.entryDate.split('T').shift() };
});
此外,导致相同的结果。
为什么for循环仅循环110次?虽然答复明确指出有112个项目。 console.log(this.data.length)
结果110
所以我认为问题在那里,但我不知道如何解决这个问题。
有人可以帮助我吗?
更新2017年4月5日
我做了类似的请求,以填补一个表的响应,我发现全部加入112项。唯一的区别是响应的大小。我一次只要求20个项目填写有分页的表格。所以我尝试请求更小的尺寸,因为在我的使用案例中,我只能请求具有某一年的日期的项目。这样做,我能够绕过这个问题。所以要清楚,问题仍然是,但由于某种原因请求更小的尺寸会返回正确的响应。
看来,你的回应只是对你的谎言。您包含的用于迭代数组的两种方式看起来没问题,它们应该创建一个与原始大小相同的数组。最可能的问题是'this.data.numberOfElements'和'this.data.totalElements'中的值是错误的。 –
@NitzanTomer,但检查我的网络中的内容选项卡显示在同一天,4月4日三项。我的新数组只有一个值为4月4日的项目。这也解释了两个项目的差异。 –
如果您发布的代码是您使用的代码,那么您没有理由描述发生的事情。在迭代数组之前添加这个'console.log(this.data.length)'。它打印什么? –