#json #angular #angular6
#json #angular #angular6
Вопрос:
У меня есть ответ в формате JSON, ниже приведен мой ответ.
{
"data": [
{
"2": [
{
"name": "Test1",
"Address": "Test2"
},
]
},
{
"5": [
{
"name": "Test3",
"Address": "Test4"
},
]
},
]
}
Я могу получить доступ к данным till из ответа.Здесь «2» и «5» — это дата.Если в этом ответе json присутствует одна дата, то для этого ответа я должен получить имя и адрес
Но я должен показать список данных.
<div *ngFor = "let data of result">
<span>{{data.name}}</span>
<span>{{data.Address}}</span>
</div>
В ts-файле,
let result = response.data;
Я хочу получить доступ к имени и адресу из этого.Кто-нибудь, пожалуйста, может помочь мне, как это сделать.
Ответ №1:
Вы можете использовать функции Object.key
, map
и concat
для выравнивания ваших данных следующим образом
let obj = this.result;
this.result = Object.keys(obj).map(function (key) {
let objkey = obj[key];
let first = Object.keys(objkey)[0]
return obj[key][first];
});
this.result = [].concat.apply([], this.result);
Демонстрация на https://stackblitz.com/edit/angular-flat-array-property
Обновлено:
Я обновляю демо с помощью filter, чтобы применить ваш фильтр по дате.
let obj = this.result;
var filter = '5';
this.result = Object.keys(obj).map(function (key) {
let objkey = obj[key];
let first = Object.keys(objkey)[0]
if(filter == first){
return obj[key][first];
}else{
return null;
}
});
this.result = [].concat.apply([], this.result.filter(c=>c != null));
Комментарии:
1. Мое требование таково, что если дата равна 2-й, то в списке должны отображаться только данные 2-й даты. Если дата 5-я, то данные 5-й даты должны отображаться в списке. в принципе, мне нужно отфильтровать это на основе даты. Можете ли вы помочь мне, как это сделать. @Hien Nguyen
2. Да, это работает. Это именно то, что я искал. Большое спасибо 🙂 . Действительно, это спасло мой день. @Hien Nguyen