javascript - 希望过滤数组并根据标志将它们分成 2 个数组(如果为真或为假)

标签 javascript angularjs

我计划根据其中一个内部数组中的标志将一个数组过滤成 2 个单独的数组,但遇到了麻烦。请帮助我的代码。 我们如何从 apiData 中获取 2 个单独的数组,以便根据标志值在类型数组中过滤对象

var apiData = [{
  "id": 1,
  "types": [{
    "id": "1.1",
    "flag": true,
    },
    "id": "1.2",
    "flag": false
    }]
  },
  "id": 2,
  "types": [{
    "id": "2.1",
    "flag": true,
    }]
  }
]


My Result should be like this for filteredTrueArray [{
  "id": 1,
  "types": [{
    "id": "1.1",
    "flag": true,
    }]
  },
  "id": 2,
  "types": [{
    "id": "2.1",
    "flag": true,
    }]
  }
]


I wanted $scope.filteredTrueArray to have types array with flag=true value objects and another array to have types array with only flag=false objects. Below is my code

$scope.filteredTrueArray = apiData.filter(function(item) {
var isTrueFound = item.types.some(function (el) {
  return el.flag == true;
});
if(isTrueFound){
  for(var i=0;i<item.types.length>0;i++)
  {
    if(item.types[i].flag == true){
      $scope.filteredTrueArray.push(item.types[i]);
    }
  }
}
});

最佳答案

我写了一个简单的过滤函数。请看一看!

var apiData = [{
  "id": 1,
  "types": [{
    "id": "1.1",
    "flag": true,
  }, {
    "id": "1.2",
    "flag": false
  }]
}, {

  "id": 2,
  "types": [{
    "id": "2.1",
    "flag": true,
  }]
}];

function filterByTypeFlag(records, flagValue) {
  var filtered = [];

  records.forEach(function (record) {
    var matchedTypes = [];

    record.types.forEach(function (type) {
      if (type.flag === flagValue) {
        matchedTypes.push(type);
      }
    });

    if (matchedTypes.length) {
      filtered.push({
        "id": record.id,
        "types": matchedTypes
      });
    }
  });
  return filtered;
}

filterByTypeFlag(apiData, true);
filterByTypeFlag(apiData, false);

关于javascript - 希望过滤数组并根据标志将它们分成 2 个数组(如果为真或为假),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54395004/

相关文章:

javascript - 如何在客户端获取用户输入并从数组返回值?

javascript - 如何制作一个由 javascript 覆盖的幻灯片?

javascript - 如何使用 React Router 将 div 放入 Switch 中?

JavaScript 前导数字

javascript - Angular Test 不调用 Promise 回调

javascript - 如何在事件上对 jquery 进行指令更新 ng-model?

node.js - AngularJS 数据绑定(bind)的问题

javascript - React SSR、NextJS 与 Chrome headless 预渲染

asp.net-mvc - 使用 AngularJS/.NET 不作为 SPA

javascript - 从父 Controller 调用 $mdDialog 内的函数