不循环遍历整个响应JSON

时间:2017-04-04 14:39:23

标签: javascript arrays json angular typescript

上下文:使用Typescript处理Angular2应用程序。

问题:
我从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一部分的数组 这就是我试图实现这一目标的方法:

let dataDates = [];
for(let entry of this.data) {
  dataDates.push(entry.entryDate.split('T').shift());
}

这导致一个包含110个项目的数组,比原始响应中的数量减少了两个。我认为这是因为最后几个条目是相同的并且相互覆盖。所以我尝试了这个:

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-04-05
我正在做一个类似的请求来填充响应表,我注意到所有112项都被添加了。唯一的区别是响应的大小。我一次只要求20件物品来填充有分页的表格。因此,我尝试要求较小的尺寸,因为在我的使用案例中,我只能请求具有特定年份日期的项目。这样做,我能够绕过这个问题。所以要明确,问题仍然存在,但由于某种原因请求较小的尺寸会返回正确的响应。

1 个答案:

答案 0 :(得分:-1)

您做了什么检查数据,并100%确定您收到了您希望收到的数据。

建议:

  Console.log(this.data);// count the items 
  Console.log(this.data.length);// display the count.
  • 获取长度并使用索引运行for循环,例如

    for(let i = 0; i&lt; data.length; i ++){   console.log(i,data [i]);  }