如何修复angular.forEach中对象的重复

How to fix duplicatation of object in angular.forEach?

本文关键字:对象 何修复 angular forEach      更新时间:2023-09-26

请帮助我如何解决这个问题

<>之前模式。controller('schemaDetailCtrl', function($scope, ajaxCall, $location) {美元的范围。storeDetails = [{"storeName": "测试存储";"zipCode":"201301","idenNo":"999999"},{"storeName": "Test2 Store","zipCode":"201014","idenNo":"200037"},{"storeName": "Test3 Store","zipCode":"201014","idenNo":"200137"}];美元的范围。zipcodes = new Array();angular.forEach($范围。storeDetails, function(store) {this.push (store.zipCode);console.log (store.zipCode);}, scope.zipcodes美元);预期产出:201301201014201014实际输出:错误:[ngRepeat:dupes] http://errors.angularjs.org/1.2.20/ngRepeat/dupes?p0=zipcode%20in%20zipcodes&p1=string%3A201014

这个问题与你的forEach没有直接关系。它正在从视图中抛出,可以通过将track by添加到ng-repeat语句中来解决:

<div ng-repeat="zip in zipcodes track by $index">

如果您不希望在数组中出现重复项,那么将它们过滤掉将是一个单独的问题。

参考文件

谢谢大家的回答,现在我用for循环代替角。每一个,听起来不错。

for(var i = 0; i < $scope.storeDetails.length; i++) {
    var store = $scope.storeDetails[i];
    if(contains($scope.zipcodes, store.zipCode) === false) {
        $scope.zipcodes.push(store.zipCode);
    }
}
function contains(a, obj) {
    for (var i = 0; i < a.length; i++) {
        if (a[i] === obj) {
            return true;
        }
    }
    return false;
}

不需要将邮政编码复制到另一个数组中以在视图中显示,只需遍历storeDetails数组,然后引用zipCode属性来显示它。

<ul ng-repeat="store in storeDetails">
  <li>{{store.zipCode}}</li>
</ul>

这将避免数组中重复的问题。