【问题标题】:how to map 2 arrays using 1 common json field (nested array)如何使用 1 个通用 json 字段(嵌套数组)映射 2 个数组
【发布时间】:2017-06-26 16:01:36
【问题描述】:

我有 2 个要返回的数组...在本例中是就业和用户。他们都有一个共同的字段“id”,我想用那个字段来映射。

我目前可以使用 for 循环来映射它,但由于我正在循环嵌套数组...我只能捕获数组第一部分的映射。

我的 json 对象:

     $scope.Users = [{
          id: 1,
          name: "Ryan"
      }, {
          id: 2,
          name: "Julie"
      }, {
          id: 3,
          name: "Stu"
      }, 
      {
          id: 4,
          name: "Holly"
      }];

      $scope.Employments = [{
          categoriesBag: [
            {
              category: [
                {
                  user_id: 1,
                  title: "manager"
                },
                {
                  user_id: 2,
                  title: "student"
                }
              ]
            },
            {
              category: [
                {
                  user_id: 3,
                  title: "worker"
                },
                {
                  user_id: 4,
                  title: "facilty"
                }
              ]
            }
          ]
      }];

我用来映射数据的 for 循环:

$scope.getCategory = function(id) {
        var employmentCategories =  $scope.Employments.categoriesBag[0].category;
        for (var i = 0; i < employmentCategories[0].category.length; i++) {
          if (employmentCategories[0].category[i].user_id === id) {
            return employmentCategories[0].category[i].title;
          }
        }
      };    

因为我指定我只想要第一个数组就业类别[0],所以其他两个用户不包括在 for 循环中。有没有办法让我在循环内循环以仅循环嵌套类别?

【问题讨论】:

  • 你希望最终的合并数组是什么样子的?
  • 只做一个外循环for (var bag=0; bag&lt;categoriesBag.length; bag++) {}... 而不是[0] 使用[bag]
  • 并不重要...我只想根据用户 ID 返回该员工的头衔

标签: javascript angularjs for-loop nested-loops


【解决方案1】:

你可以使用嵌套循环

$scope.getCategory = function(id) {
    for (bag in $scope.Employments.categoriesBag) {
        for (category in bag.category) {
            if (category.user_id == id){
               return category.title
            }
        }
    }
}

【讨论】:

  • 知道如何把它变成一个 forEach 吗?
  • forEach 可能不适合在列表中搜索对象。这是因为回调将在列表的所有元素上调用,即使所需的元素位于列表的开头。
猜你喜欢
  • 2019-12-08
  • 2018-03-09
  • 2022-11-13
  • 2015-05-29
  • 1970-01-01
  • 2013-07-17
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
相关资源
最近更新 更多