代码之家  ›  专栏  ›  技术社区  ›  zomdar

使用foreach和switch循环数组并在angularjs中返回不同的值

  •  0
  • zomdar  · 技术社区  · 7 年前

    我有一个要循环通过的对象数组。使用函数,我想给出对象的“类型”并为它们获取“值”。

    例如:

    数组:

    $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循环数组,并使用switch检查哪个字符串传递给了我想要的特定类型。

    在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
    

    编辑:

    用for循环求解

    1 回复  |  直到 7 年前
        1
  •  3
  •   emilpalsson    7 年前

    如果我正确理解您的问题,您可以将$scope.formataddress替换为:

    $scope.formatAddress = function(addressInfo) {
      return data.find(x => x.type === addressInfo).value;
    };