Как отобразить ключевые значения в таблице HTML?

Может кто-нибудь показать мне, как я могу отображать понедельник, вторник... в столбце таблицы HTML. Я хочу отобразить весь объект в табличном формате и показать его на странице HTML. Что может быть сделано?

this.dietplan = {
                        "week1": {
                          "Monday": [
                            {
                              "time": "10:00 AM",
                              "diet": "3 eggs",
                              "calories": "150"
                            },
                            {
                              "time": "12:00 PM",
                              "diet": "2 eggs",
                              "calories": "100"
                            }
                          ],
                          "Tuesday": [
                            {
                              "time": "10:00 AM",
                              "diet": "3 eggs",
                              "calories": "150"
                            },
                            {
                              "time": "12:00 PM",
                              "diet": "2 eggs",
                              "calories": "100"
                            }
                          ]
                        }
                      }

что ты уже пробовал? пожалуйста, поделитесь своими попытками.

J. Knabenschuh 10.04.2019 09:20

@J.Knabenschuh Я попробовал этот <tr *ngFor = "let диета диетического плана | ключевое значение"> <td >{{diet.key}}</td> </tr>, но это дает мне вывод как неделя1.

Jainil Sharma 10.04.2019 09:28

Это даст вам "week1", потому что первый слой вашей структуры - это недели. Итак, вы также хотите показать свои недели в таблице? как вы хотите показать свою таблицу? Но канал пока хороший способ, но вы должны четко понимать, что вы хотите отобразить. затем вам нужно преобразовать свою структуру данных для обработки в вашем html.

J. Knabenschuh 10.04.2019 09:34

ответ - нет.

Negi Rox 10.04.2019 09:39

@J.Knabenschuh Я хочу показать понедельник "время": "10:00", "диета": "3 яйца", "калории": "150" "время": "12:00", "диета ": "2 яйца", "калории": "100" вторник то же, что и выше

Jainil Sharma 10.04.2019 09:39

@NegiRox, что тогда можно сделать?

Jainil Sharma 10.04.2019 09:40

будут ли у вас планы на несколько недель, такие как неделя 1 и неделя 2 и т. д., и хотите ли вы отображать их в одной таблице, если хотите, как это должно выглядеть?

Anusha_Mamidala 10.04.2019 09:41

@Anusha_Mamidala да, как вы сказали, у меня будет несколько недель, и в каждой неделе будут дни с понедельника по воскресенье.

Jainil Sharma 10.04.2019 09:42

мы можем показать ваш план диеты на любой день в табличном формате

Negi Rox 10.04.2019 09:43

@NegiRox как? не могли бы вы сказать

Jainil Sharma 10.04.2019 09:45

Не могли бы вы поделиться каким-либо графическим изображением того, как это должно выглядеть... чтобы я мог помочь вам создать таблицу

Anusha_Mamidala 10.04.2019 09:45

@Ануша_Мамидала ibb.co/KDqfZc4

Jainil Sharma 10.04.2019 09:54

Я обновил свою версию, соответствующую вашему фрагменту

J. Knabenschuh 10.04.2019 10:03
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
13
2 110
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

вы можете увидеть приведенный ниже код для создания таблицы из json

var _table_ = document.createElement('table'),
    _tr_ = document.createElement('tr'),
    _th_ = document.createElement('th'),
    _td_ = document.createElement('td');

// Builds the HTML Table out of myList json data from Ivy restful service.
 function buildHtmlTable(arr) {
     var table = _table_.cloneNode(false),
         columns = addAllColumnHeaders(arr, table);
     for (var i=0, maxi=arr.length; i < maxi; ++i) {
         var tr = _tr_.cloneNode(false);
         for (var j=0, maxj=columns.length; j < maxj ; ++j) {
             var td = _td_.cloneNode(false);
                 cellValue = arr[i][columns[j]];
             td.appendChild(document.createTextNode(arr[i][columns[j]] || ''));
             tr.appendChild(td);
         }
         table.appendChild(tr);
     }
     return table;
 }

 // Adds a header row to the table and returns the set of columns.
 // Need to do union of keys from all records as some records may not contain
 // all records
 function addAllColumnHeaders(arr, table)
 {
     var columnSet = [],
         tr = _tr_.cloneNode(false);
     for (var i=0, l=arr.length; i < l; i++) {
         for (var key in arr[i]) {
             if (arr[i].hasOwnProperty(key) && columnSet.indexOf(key)===-1) {
                 columnSet.push(key);
                 var th = _th_.cloneNode(false);
                 th.appendChild(document.createTextNode(key));
                 tr.appendChild(th);
             }
         }
     }
     table.appendChild(tr);
     return columnSet;
 }
var source = {
                          "Monday": [
                            {
                              "time": "10:00 AM",
                              "diet": "3 eggs",
                              "calories": "150"
                            },
                            {
                              "time": "12:00 PM",
                              "diet": "2 eggs",
                              "calories": "100"
                            }
                          ],
                          "Tuesday": [
                            {
                              "time": "10:00 AM",
                              "diet": "3 eggs",
                              "calories": "150"
                            },
                            {
                              "time": "12:00 PM",
                              "diet": "2 eggs",
                              "calories": "100"
                            }
                          ]
                        }

document.body.appendChild(buildHtmlTable(source["Monday"]));

см. рабочий пример здесь

Ответ принят как подходящий

попробуйте что-то вроде следующего - см. https://stackblitz.com/edit/angular-week-table

HTML

<table class = "table table-hover" [id] = "mytable"> 
  <tbody> 
    <ng-container *ngFor = "let diet of dietplan | keyvalue"> 
      <tr *ngFor = "let day of diet.value | keyvalue | sortWeekday">
        <td>{{day.key}}</td> 
        <ng-container *ngFor = "let row of day.value"> 
          <td>{{row.time || string}}<br> {{row.diet || string}}<br> {{row.calories || string}}<br></td>
        </ng-container> 
      </ng-container>
    </tbody>
  </table>

тс

  dietplan = {"week1": {
              "Monday": [
                {
                  "time": "10:00 AM",
                  "diet": "3 eggs",
                  "calories": "150"
                },
                {
                  "time": "12:00 PM",
                  "diet": "2 eggs",
                  "calories": "100"
                }
              ],
              "Tuesday": [
                {
                  "time": "10:00 AM",
                  "diet": "3 eggs",
                  "calories": "150"
                },
                {
                  "time": "12:00 PM",
                  "diet": "2 eggs",
                  "calories": "100"
                }
              ]
            }
          };

труба ц

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({name: 'sortWeekday'})
export class SortWeekdayPipe implements PipeTransform {
  transform(weekdays: any[]): any[] {
    weekdays.sort((a, b) => {
      let sortedWeekdays = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Staurday', 'Sunday'];

      return sortedWeekdays.indexOf(a.key) - sortedWeekdays.indexOf(b.key);
    });
    return weekdays;
  }
}

Это сработало, но для меня выход дней не идет в последовательном порядке. вывод: ibb.co/s3TJ0MF

Jainil Sharma 10.04.2019 10:29

Я немного изменил ваш код: я изменил ваш угловой код следующим образом: <table class = "table table-hover" [id] = "mytable"> <tbody> <ng-container *ngFor = "let диета диеты | "> <tr *ngFor = "let day of diet.value | keyvalue"><td>{{day.key}}</td> <ng-container *ngFor = "let row of day.value"> <td >{{строка.время || строка}}<br> {{row.diet || строка}}<br> {{row.calories || string}}<br></td> </ng-container> </ng-container> </tbody> </table>

Jainil Sharma 10.04.2019 10:30

Я обновил свой пост с вашей настройкой. Чтобы получить правильный порядок, вы должны отсортировать значения. Из-за вашей структуры данных вы должны сортировать по названию дня недели. Самый простой способ добиться этого — настроить статическую сортировку вашей собственной сортировочной трубы по имени дня недели.

J. Knabenschuh 10.04.2019 10:52

Теперь я также добавил канал, см. скрипку в моем посте, я также обновил исходный код. Надеюсь помог, если да, отметьте пост

J. Knabenschuh 10.04.2019 11:07

Спасибо, вы спаситель :)

Jainil Sharma 10.04.2019 13:22

Другие вопросы по теме