используя foreach и switch для обхода массива и возврата различных значений в angularjs - PullRequest
0 голосов
/ 26 июня 2018

У меня есть массив объектов, которые я хочу просмотреть. Используя функцию, я хочу дать «тип» объекта и получить «значение» для них.

Например:

Массив:

$scope.data = [
  {
    "type": "CUSTOMER_NO",
    "value": "12345"
  },
  {
    "type": "NAME_LINE_1",
    "value": "CURTIS"
  },
  {
    "type": "ADDR_STREET1",
    "value": "500 RODEO DR"
  },
  {
    "type": "ADDR_STREET2",
    "value": "SUITE 102, MD 0750"
  },
  {
    "type": "ADDR_CITY",
    "value": "SAINT JOSEPH"
  },
  {
    "type": "ADDR_ZIP",
    "value": "22331"
  }
]

контроллер (forloop):

$scope.formatAddress = function(addressInfo) {
        angular.forEach($scope.data, function(addressValue) {
         switch(addressValue.type) {
              case "CUSTOMER_NO":
                  address = addressValue.value;
                  break;
              case "ADDR_STREET1":
                  address = addressValue.value;
                  break;
              case "ADDR_STREET2":
                  address = addressValue.value;
                  break;
              case "NAME_LINE_1":
                  address = addressValue.value;
                  break;
              case "NAME_LINE_2":
                  address = addressValue.value;
                  break;
              case "ADDR_CITY":
                  address = addressValue.value;
                  break;
              case "ADDR_ZIP":
                  address = addressValue.value;
                  break;
              default:
                  address = addressValue.value;
         }
        });
        return address;
      };

Я перебираю массив, используя forEach, и использую переключатель, чтобы проверить, какая строка передана определенному типу, который я хочу.

В HTML:

 <div>{{vm.formatAddress("CUSTOMER_NO")}} - {{vm.formatAddress("NAME_LINE_1")}}</div>
 <div>{{vm.formatAddress("ADDR_STREET1")}} {{vm.formatAddress("ADDR_STREET2")}}</div>
 <div>{{vm.formatAddress("ADDR_CITY")}}, {{vm.formatAddress("CUSTOMER_NO")}} - {{vm.formatAddress("ADDR_ZIP")}}</div>

То, что я сейчас получаю, это ... просто номер клиента, например ...

12345 - 12345
12345 12345
12345, 12345 - 12345

Что я хочу вернуть ...

12345 - CURTIS
500 RODEO DR, SAINT JOSEPH
SUITE 102, MD 0750
SAINT JOSEPH, 22331

EDIT:

решил это используя цикл for

1 Ответ

0 голосов
/ 26 июня 2018

Если я правильно понимаю вашу проблему, вы можете просто заменить ваш $ scope.formatAddress следующим:

$scope.formatAddress = function(addressInfo) {
  return data.find(x => x.type === addressInfo).value;
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...