2017-09-20 89 views
0

我很難弄清楚如何遍歷json數據來收集所有重複的Id以顯示與其Id相匹配的「dateTimes」。從json數組中獲取ids

enter image description here

例如,我需要它,以顯示與此類似: 富豪布勞沃德體育場12 & RPX 2017年9月20日13:30 2017年9月20日16:00 2017-09 -20 18:35

翻轉的好萊塢電影10 2017年9月20日12:40 2017年9月20日14:40 2017年9月20日16:35

我寫了一個函數,我認爲這隻適用於一個ID,但我不知道如何找到所有匹配的ID來顯示日期時間。

getShowtimes(data){ 

    var json = JSON.parse(data); 

    for(let i = 0; json.theater.id; i++){ 

     if (json[i].theatre.id == 10863){ 

      json[i].theatre.dateTime; 

     } 

    } 

} 

現在我沒有使用函數來顯示結果(導致它不工作),我只是使用下面的代碼。

<div class="showtime" *ngFor="let shows of show"> 
    <div *ngFor="let detail of shows.showtimes> 
     <div *ngIf="detail.theatre.id == 10863"> 
      {{detail.theatre.name}}{{detail.dateTime}} 
     </div> 
    </div> 
</div> 
+0

你需要採取的平陣列數據並做一個小組 ID。你可以使用lodash這樣的庫來實現這個目的,或者編寫一個原生的javascript方法來分組https://stackoverflow.com/questions/14446511/what-is-the-most-efficient-method-to-groupby-on-a-javascript -ray-of-objects – spiritwalker

回答

0

使用這樣detail.theatre.id === '10863',因爲它是一個字符串,

<div *ngIf="detail.theatre.id === '10863'"> 
    {{detail.theatre.name}}{{detail.dateTime}} 
</div> 
1

也許這可以幫助:

const data = [ 
 
    { theatre: { id: "10863", name: "Regal Broward Stadium 12 & RPX", dateTime: "2017-09-20T13:30" }}, 
 
    { theatre: { id: "10863", name: "Regal Broward Stadium 12 & RPX", dateTime: "2017-09-20T13:30" }}, 
 
    { theatre: { id: "10863", name: "Regal Broward Stadium 12 & RPX", dateTime: "2017-09-20T16:00" }}, 
 
    { theatre: { id: "10863", name: "Regal Broward Stadium 12 & RPX", dateTime: "2017-09-20T18:35" }}, 
 
    { theatre: { id: "10863", name: "Regal Broward Stadium 12 & RPX", dateTime: "2017-09-20T21:00" }}, 
 
    { theatre: { id: "4089", name: "Flipper's Hollywood Cinema 10", dateTime: "2017-09-20T12:40" }}, 
 
    { theatre: { id: "4089", name: "Flipper's Hollywood Cinema 10", dateTime: "2017-09-20T14:40" }}, 
 
    { theatre: { id: "4089", name: "Flipper's Hollywood Cinema 10", dateTime: "2017-09-20T16:35" }} 
 
]; 
 

 
let result = {}; 
 

 
data.forEach((item) => { 
 
    if (!result.hasOwnProperty(item.theatre.id)) { 
 
    result[item.theatre.id] = { 
 
     name: item.theatre.name, 
 
     dates: item.theatre.dateTime 
 
    }; 
 
    } else { 
 
    result[item.theatre.id].dates = result[item.theatre.id].dates + ' ' + item.theatre.dateTime; 
 
    } 
 
}); 
 

 

 
Object.keys(result).forEach((key) => { 
 
    console.log(`${result[key].name} ${result[key].dates}`) 
 
});

+0

控制檯告訴我data.forEach不是函數 – Jason

+0

你能告訴我更多關於'data'的外觀嗎? @Jason – kevguy