如何从对象数组每天显示一条消息

时间:2016-05-06 18:41:10

标签: arrays angularjs javascript-objects

我有一个每天有一个对象的对象数组(最多30个)。每天都有会议细节,我想每天展示。因此,如何遍历数组以按顺序每天选择和显示一条消息?

对象数组如下:

{
  "meetings": [{
    "date": "07/06/2016",
    "startTime": "15.00",
    "finishTime": "16.00",
    "subject": "local community"
  }, {
    "date": "08/06/2016",
    "startTime": "12.00",
    "finishTime": "12.30",
    "subject": "environment"
  }, {
    "date": "09/06/2016",
    "startTime": "12.00",
    "finishTime": "13.00",
    "subject": "local community"
  }]
}

由于

2 个答案:

答案 0 :(得分:0)

如果我正确理解了这个问题。您希望每天只有一条消息,即使数组中有多个消息也是如此。最简单的方法是将其转换为地图。

如果您想显示给定日期的最后一条消息,请执行此操作

var data = { "meetings" : [...]};
var messages = {};
for(var message of data.meetings) {
  messages[message.date] = message;
}

如果要显示给定日期的第一条消息,则只需添加if语句

var data = { "meetings" : [...]};
var messages = {};
for(var message of data.meetings) {
  if(!messages[message.date]) {
    messages[message.date] = message;
  }
}

<强>更新 如果要保留消息,可以使用数组映射

var data = { "meetings" : [...]};
var messages = {};
for(var message of data.meetings) {
  if(!messages[message.date]) {
    messages[message.date] = [];
  }
  messages[message.date].push(message);
}

然后您可以使用以下代码找到特定日期的第7条消息(按照数组中的外观顺序)

var message = messages["01/01/2012"][6];

答案 1 :(得分:0)

app.js(您的JSON文件名为meetings.json)

var app = angular.module('Meetings', []);

app.factory('meetings', ['$http', function($http) {
  return $http.get('meetings.json')
         .success(function(data) {
           return data;
         })
         .error(function(data) {
          console.log("error");
           return data;

         });
}]);


app.controller('HomeController', ['$scope', 'meetings', function($scope, meetings) { 
  meetings.success(function(data){
    $scope.meeting = data;
});
}]);

的index.html

<div ng-repeat="day in meeting.meetings">
  <p>{{day.date}}</p>
  <p>{{day.startTime}}</p>
  <p>{{day.finishTime}}</p>
  <p>{{day.subject}}</p>
</div>

我希望这就是你要求的。