Javascript 如何过滤和构造此JSON?

Javascript 如何过滤和构造此JSON?,javascript,angularjs,json,Javascript,Angularjs,Json,我有一个名为events的json对象数组,其中包含像eventId、eventName和最重要的dateofevent这样的字段 [{event1}、{event2}、{event3}] 我需要迭代这个事件数组,过滤掉当天发生的事件。获得一个像这样的新对象 "days": [ { "date": "11-05-2015", "events": [ {"eventId": 1, ...}, {"eventId

我有一个名为events的json对象数组,其中包含像eventId、eventName和最重要的dateofevent这样的字段

[{event1}、{event2}、{event3}]

我需要迭代这个事件数组,过滤掉当天发生的事件。获得一个像这样的新对象

"days": [
    {
        "date": "11-05-2015",
        "events": [
            {"eventId": 1, ...},
            {"eventId": 2, ...},
            {"eventId": 3, ...},
            {"eventId": 4, ...},
        ]
    },

如何使用Javascript或Angular高效地实现这一点

您可以创建一个以日期为键的新对象,值是包含事件的数组。 在获得date=>events映射后,将其转换为所需结构中的数组

假设原始数据位于称为事件的变量中:

    var events  = [{event 1}, {event 2}...];
    var daysMap = {};
    var days = [];
    events.map(function(event) {
        if (days[event.dateofevent] === undefined) {
            days[event.dateofevent] = [];
        }
        days[event.dateofevent].push(event);
    });
    for (var day in daysMap) {
        days.push({
            date: day, 
            events: daysMap[day]
        });
    }
HTML

CSS


第一件事:Javascript是一种语言。Angular是一个Javascript框架。你不需要有棱角才能达到你的要求。第二,这应该有助于复制感谢您的答案!
<div ng-app>
    <span class="bold">Demonstrating filtering and sorting using Angular JS</span>
    <br /><br />
        <div ng-controller="ShoppingCartCtrl">        
            <div>Sort by: 
            <select ng-model="sortExpression">
                    <option value="Name">Name</option>
                    <option value="Price">Price</option>
                    <option value="Quantity">Quantity</option>
                </select>
            </div>
            <br />
            <div><strong>Filter Results</strong></div>
            <table>
                <tr>
                    <td>By Any: </td>
                    <td><input type="text" ng-model="search.$" /></td>
                </tr>
                <tr>
                    <td>By Name: </td>
                    <td><input type="text" ng-model="search.Name" /></td>
                </tr>
                <tr>
                    <td>By Price: </td>
                    <td><input type="text" ng-model="search.Price" /></td>
                </tr>
                <tr>
                    <td>By Quantity: </td>
                    <td><input type="text" ng-model="search.Quantity" /></td>
                </tr>
            </table>
            <br />
            <table border="1">
                <thead>
                    <tr>
                        <th>Name</th>
                        <th>Price</th>
                        <th>Quantity</th>
                    </tr>
                </thead>
                <tbody>
                    <tr ng-repeat="item in items | orderBy:mySortFunction | filter:search">
                        <td>{{item.Name}}</td>
                        <td>{{item.Price | currency}}</td>
                        <td>{{item.Quantity}}</td>
                    </tr>
                </tbody>
            </table>
            <br />
</div>
</div>
function ShoppingCartCtrl($scope)  {

        $scope.items = [
            {Name: "Soap", Price: "25", Quantity: "10"},
            {Name: "Shaving cream", Price: "50", Quantity: "15"},
            {Name: "Shampoo", Price: "100", Quantity: "5"}
        ];

        $scope.mySortFunction = function(item) {
            if(isNaN(item[$scope.sortExpression]))
                return item[$scope.sortExpression];
            return parseInt(item[$scope.sortExpression]);
        }
}
.bold { font-weight:bold; }

table td{
    padding: 10px;
}

table th{
    font-weight: bold;
    text-align: center;
}