javascript - 不遍历整个响应 JSON

标签 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 个项目的数组,比原始响应中少了 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-04-05 更新
我正在做一个类似的请求,用响应填充一个表,我注意到添加了所有 112 个项目。唯一的区别是响应的大小。我一次只请求 20 个项目来填充有分页的表。所以我尝试请求更小的尺寸,因为在我的用例中,我可以只请求具有特定年份日期的项目。这样做,我能够规避这个问题。所以需要明确的是,问题仍然存在,但出于某种原因请求较小的尺寸会返回正确的响应。

最佳答案

您做了什么来检查数据并 100% 确定您收到的是您期望收到的数据。

建议:

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

    for(让 i=0;i

关于javascript - 不遍历整个响应 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43210379/

相关文章:

javascript - windows.resize 函数问题

C : How can I swap two objects in a array?

c# - 将 JSON 反序列化为几个 C# 子类之一

sql - 将 json 数组的每个项目的值与 postgres 9.6 相乘

javascript - 用 base64 编码字符串替换 css 文件中的所有图像路径 - 汇总

javascript - Gulp less 未正确处理包括未定义的包含变量

javascript - 我可以暂停 iScroll 功能吗?

javascript - ng-repeat 数组的关联数组?

java - 通过数组进行索引循环并打印出元素?

java - 立即将 Spark 中的 Json 字符串索引到 Elasticsearch