Javascript 如何过滤和构造此JSON?
我有一个名为events的json对象数组,其中包含像eventId、eventName和最重要的dateofevent这样的字段 [{event1}、{event2}、{event3}] 我需要迭代这个事件数组,过滤掉当天发生的事件。获得一个像这样的新对象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
"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;
}