#javascript #angularjs
#javascript #angularjs
Вопрос:
Пожалуйста, скажите мне, как вы можете вычислить количество статусов от объекта и отобразить результаты в countStatus
?
var objs = {
"Name A": [
{
"id": 3,
"status": "allow"
},
{
"id": 5,
"status": "new"
},
{
"id": 8,
"status": "new"
}
],
"Name B": [
{
"id": 7,
"status": "new"
}
]
}
<div ng-repeat="(key, list) in objs">
{{key}}
<div ng-repeat="item in list">
{{item.status}} : {{countStatus}}
</div>
</div>
Ожидаемый результат:
Name A
allow : 1
new : 2
Name B
new : 1
Ответ №1:
Вы могли бы использовать Array.prototype.reduce()
метод. Приведенный ниже код показывает, как создать требуемый результат.
const objs = {
'Name A': [
{
id: 3,
status: 'allow',
},
{
id: 5,
status: 'new',
},
{
id: 8,
status: 'new',
},
],
'Name B': [
{
id: 7,
status: 'new',
},
],
};
const ret = Object.keys(objs).map((x) => {
return {
[x]: Object.values(objs[x]).reduce((prev, c) => {
const p = prev;
p[c.status] = p[c.status] || 0;
p[c.status] = 1;
return p;
}, {}),
};
});
console.log(ret);
Выведите ret, как показано ниже, в Angular:
<div ng-repeat="(key, value) in ret">
<div ng-repeat="(key, value) in value">
{{key}}
<div ng-repeat="(key, value) in value">
{{key}} : {{value}}
</div>
</div>
</div>
Комментарии:
1. Как я могу вывести это в форму?
<div ng-repeat="(key, list) in objs"> {{key}} <div ng-repeat="item in list"> {{item.status}} : {{countStatus}} </div> </div>
2. @j.ss проверьте приведенный ниже код, как печатать и добавлять
ret
в вашу область.