尝试根据值

时间:2018-01-24 04:21:11

标签: javascript arrays json sorting typescript

这是我正在使用的JSON:

https://data.cityofnewyork.us/resource/xx67-kt59.json?$其中= CAMIS%20 =%2230112340%22

我会动态地使用不同的数据进行查询,因此它可能会发生变化。

我实际上要做的是以某种方式将这个数组中的元素组织成基于inspection_date的不同数组。

因此,对于每个唯一的inspection_date值,这些相应的检查将被放入其自己的集合中。

  1. 如果我事先知道了这些日期,我可以轻松地遍历每个元素,然后进入数组。
  2. 有没有办法动态创建数组?
  3. 我的最终目标是能够在网页上使用Angular 5显示每组检查(基于检查日期)。我已经启动了网站,并且正在进行所有请求。

    所以,我试图最终得到这样的东西。但当然,使用请求的响应中的任何日期。

    2016-10-03T00:00:00

    列出检查

    2016-04-30T00:00:00

    列出检查

    2016-04-12T00:00:00

    列出检查

    仅供参考,以下是我使用的代码:

      ngOnInit() {
        this.route.params.subscribe(params => {
          this.title = +params['camis']; // (+) converts string 'id' to a number
          this.q.getInpectionsPerCamis(this.title).subscribe((res) => {
            this.inspectionList = res;
              console.log(res);
          });
          // In a real app: dispatch action to load the details here.
    
        });
    
      }
    

    我希望我能为您提供更多信息,但此时此刻,我只是想开始使用。

1 个答案:

答案 0 :(得分:1)

我在jQuery中写这个只是因为它对我来说更快,但它应该很好地转换为Angular(我现在不想用一个有角度的应用程序)

如果您有任何问题,请与我们联系。



$(function() {
  let byDateObj = {};
  $.ajax({
    url: 'https://data.cityofnewyork.us/resource/xx67-kt59.json?$where=camis%20=%2230112340%22'
  }).then(function(data) {
    //probably do a check to make sure the data is an array, im gonna skip that
    byDateObj = data.reduce(function(cum, cur) {
      if (!cum.hasOwnProperty(cur.inspection_date)) cum[cur.inspection_date] = [];
      //if the cumulative array doesn't have the inspection property already, add it as an empty array
      cum[cur.inspection_date].push(cur);
      //push to inspection_date array.
      return cum;
      //return cumulatie object
    }, byDateObj);
    //start with an empty object by default;
    console.log(byDateObj);
  }, console.error);
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
&#13;
&#13;