Вычисление статусов объекта и отображение результатов

#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 в вашу область.