Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/474.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不在整个响应JSON中循环_Javascript_Arrays_Json_Angular_Typescript - Fatal编程技术网

Javascript 不在整个响应JSON中循环

Javascript 不在整个响应JSON中循环,javascript,arrays,json,angular,typescript,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: 11

上下文:使用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() };
} );
let-dataDates:Array=this.data.map(obj=>{
返回{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循环,例如


    对于(假设i=0;i您做了什么来检查数据,并100%确保您收到了预期收到的数据

    建议:

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


      为了(假设i=0;似乎您的回答就在您自己的身上。您用于迭代数组的两种方法似乎都可以,它们应该创建一个与原始数组大小相同的数组。最有可能的问题是
      this.data.numberOfElements
      this.data.totalElements
      中的值是错误的。@NitzanTomer但检查“我的网络”选项卡中的ntent显示了同一日期(4月4日)的三个条目。我的新数组只有一个值为4月4日的条目。这也解释了两个条目之间的差异。如果您发布的代码是您使用的代码,则没有理由发生您描述的情况。添加此
      console.log(This.data.length)
      在您迭代数组之前。它打印了什么?您没有从API获得正确的结果,需要检查API响应。您是否在某处解析响应?如果是,您可以分享一点这段代码吗?您的响应似乎就在您身上。您包含的用于迭代数组的两种方法似乎没有问题,它们应该e与原始数组大小相同的数组。最可能的问题是
      this.data.numberOfElements
      this.data.totalElements
      中的值错误。@NitzanTomer但检查“我的网络”选项卡中的内容时,会在同一日期四月四日显示三个条目。我的新数组中只有一个条目的值为april 4th.This还解释了两个项目的差异。如果您发布的代码是您使用的代码,那么您描述的情况没有理由发生。添加此
      console.log(this.data.length)
      在您迭代数组之前。它打印了什么?您没有从API获得正确的结果,需要检查API响应。您是否在某处解析响应?如果是,请共享一点此代码?这是否已经是检查响应长度的选项。在所有情况下,它都返回110,但当我手动计算响应长度时,我建议ted 112.好吧…你最好隔离错误。那么…退一步,你有权访问数据库吗?你确定db表正在返回112条记录和你正在呈现的查询吗?这是否已经是检查响应长度的答案。在所有情况下,它都返回110,但当我手动计算长度时,我计算了112。好吧…你知道吗你最好隔离错误。那么…退一步,你有访问数据库的权限吗?你确定db表正在返回112条记录和你正在呈现的查询吗?