JSON - 在对象中分割每秒逗号

时间:2018-02-21 13:39:17

标签: javascript angularjs

我有这样的JSON对象:

"data": [
      {
        "from": "2017-01-06",
        "to": "2017-01-07"
      },
      {
        "from": "2017-01-28",
        "to": "2017-02-05"
      }
    ]

我希望在屏幕上显示它。但首先,我需要将数据拆分为:

from: 2017-xx-xx, to: 0000-00-00,
from: 2017-xx-xx, to: 0000-00-00

每次替换都有效,但我仍然遇到每秒逗号的问题。

我已经编码如下:

controllers.filter('newFilter', function () {
return function (item) {
    var json = JSON.stringify(item);
    if (json) {
        json = json.replace(/"/g, "");
        json = json.replace(/{|}/gi, "");
        json = json.split(',').join("\n");
        json = json.substring(1, json.length - 1);
        return json;
    }
};
});

我得到了:

from: 2017-xx-xx, 
to: 0000-00-00,
from: 2017-xx-xx, 
to: 0000-00-00

如何使用split和join更改行来执行此操作?

关于html显示的@edit - 这个值在数据标题中作为工具提示:

 <tr class="pointer" ng-repeat="plan in plans">
     <td class="nowrap">{{plan.person}}</td>
     <td class="yearView" ng-repeat="month in plan.data"
         bs-tooltip data-title="{{month.dataTest| newFilter}}"
         data-container="body">

这只是一个非常奇怪的例子,因为在1月份我只有一个数据来自 - 但可能在4月我将从 - 到达4-5个数据。我的英语可能还很难。

我想创建一个过滤器,因为我放弃了其余的想法。

@ edit2 - &gt;好吧,我粘贴了我的数据,但它只是JSON的一个片段。

我在数据库中的每个人的全部json:

 {
    "person": "John Smith",
    "Id": 50,
    "data": [
      {
        "month": 1,
        "maxDay": 31,
        "dataTest": [
          {
            "from": "2017-01-06",
            "to": "2017-01-07"
          },
          {
            "from": "2017-01-28",
            "to": "2017-02-05"
          }
        ]
      },

1 个答案:

答案 0 :(得分:2)

  

我希望在屏幕上显示它。但首先,我需要拆分数据   形成:

无需stringify item,使用mapjoin直接遍历对象的密钥

var output = item.map( s => "from:" + s.from + ", to: " + s.to ).join( "\n" );

如果要在屏幕上显示,请将它们包裹在div

var output = item.map( s => "<div>from:" + s.from + ", to: " + s.to + "</div>" )
                 .join( "<br>" );

或作为列表项

var output = "<ul>" +
               item.map( s => "<li>from:" + s.from + ", to: " + s.to + "</li>" ).join( "" ) + 
             "</ul>";