2016-05-06 5 views
1

私は毎日1つのオブジェクト(最大30)を持つオブジェクト配列を持っています。毎日、会議の詳細があります。これは毎日表示したいものです。したがって、配列を1日に1つのメッセージを選択して表示するにはどうすればよいでしょうか?オブジェクトアレイから1日1メッセージを表示する方法

次のようにオブジェクトの配列です:

{ 
    "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" 
    }] 
} 

おかげ

+0

「1日に1つのメッセージを選択して並べ替えるために、配列を横切る」とは、正確には何を意味しますか?あなたは現在の日に並んでいるアイテムを表示しようとしていますか? – ajmajmajma

+0

申し訳ありませんが明確でない場合...私はその日の関連する会議の詳細を表示したいだけだったということでしたが、翌日の次の会議の詳細を表示します。 – GreenDome

+0

今月のデータがあり、現在の日のみを表示します。これは反復か何か?彼らはどのようにDOMに表示されますか? – ajmajmajma

答えて

0

私は問題を正しく理解していれば。アレイ内に複数のメッセージがあっても、1日に1つのメッセージしか表示したくないということです。最も簡単な方法はマップに変換することです。

指定した日付の最後のメッセージを表示したい場合は、特定の日付の最初のメッセージを表示したい場合は、この

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

は、あなただけの文

場合は追加する必要があります
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); 
} 

あなたは次のコードを使用して、特定の日のために(配列の出現のために)第七のメッセージを見つけることができます(あなたのJSONファイルがmeetings.jsonと呼ばれている)

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

はい私は問題を理解していると思いますが、「マップに変換する」という意味は何かを意味しません。たとえば、特定の日の第7回のミーティングをどのように表示しますか? – GreenDome

0

app.js

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> 

私は、これはあなたが尋ねたものです願っています。

+0

これはJSONファイルを通過し、すべての会議の詳細を一度に表示します。 – GreenDome

+0

ng-repeatの代わりに

{{meeting.meetings [x] .date}}

を使用して、xが0から始まるX + 1会議の日付を表示できます。startTime、finishTime、等 –

+0

あなたは私のために迅速なjsfiddleを行うことができますか?私はあなたのコンセプトを理解していると思いますが、翌日の次回のミーティングの詳細を表示するために、毎日x + 1をどのように増やすのかまだ分かりません。 – GreenDome

関連する問題