AngularJS使用forEach遍历数组时push前如何过滤重复id值
方案1:ES6 Set 一键去重(推荐现代浏览器环境使用)
代码最简洁,直接提取所有id后通过Set去重:
// 一行代码完成提取+去重 $scope.myNewarray = [...new Set($scope.categoryList.map(item => item.id))];
如果不想改原有遍历逻辑,也可以在你现有代码后补充一行去重:
angular.forEach($scope.categoryList, function (object) { $scope.myNewarray.push(object.id); }); // 新增下面这行去重即可 $scope.myNewarray = [...new Set($scope.myNewarray)];
方案2:遍历过程中判断去重(兼容低版本浏览器,比如IE11)
如果项目需要兼容不支持ES6 Set的旧环境,可以在push前先判断id是否已存在:
$scope.myNewarray = []; angular.forEach($scope.categoryList, function (object) { // 不存在对应id时才执行push if ($scope.myNewarray.indexOf(object.id) === -1) { $scope.myNewarray.push(object.id); } });
两种方案最终得到的$scope.myNewarray都是你需要的[44,76,77]格式。
内容的提问来源于stack exchange,提问作者Kumara
相关产品推荐
相关产品推荐

