Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何只执行一次javascript命令_Javascript_Arrays_Angularjs - Fatal编程技术网

如何只执行一次javascript命令

如何只执行一次javascript命令,javascript,arrays,angularjs,Javascript,Arrays,Angularjs,我有一个函数调用HTTP请求GET来比较给定的值,以检查它是否匹配数组中的任何元素。如果没有匹配项,我想将给定的值放入数组中,但我的问题是,由于我循环了许多元素,所以当我只需要在数组中显示一个元素时,我会在数组中得到重复项。这是我的密码: $scope.fetchParcel = function() { $http({ method: 'GET', url: '/infiniti/' + $scope.infinitiId,

我有一个函数调用HTTP请求GET来比较给定的值,以检查它是否匹配数组中的任何元素。如果没有匹配项,我想将给定的值放入数组中,但我的问题是,由于我循环了许多元素,所以当我只需要在数组中显示一个元素时,我会在数组中得到重复项。这是我的密码:

 $scope.fetchParcel = function()
     {

    $http({
            method: 'GET',
            url: '/infiniti/' + $scope.infinitiId, 
        })
        .success(function(a){

            angular.forEach($scope.parcels, function(parcel, key){
                    angular.forEach(parcel, function(par){


                        if(par == $scope.shipper_ref_no){
                            $scope.scans.push(parcel);
                            $scope.checked++;

                            $scope.parcels.splice(key, 1);

                        }
                        if(par != $scope.shipper_ref_no){
                            $scope.excludeds.push($scope.shipper_ref_no);
                        }


                    });

            });

        });

}
在最后一部分,它说
$scope.excludes.push($scope.shipper\u ref\u no)它将shipper\u ref\u no存储到数组中是正确的,但是由于数组中有三个元素,因此当检查发现shipper\u ref\u no与所有元素都不匹配时,它实际上会将shipper\u ref\u no存储三次。我如何做到这一点

阵列的示例:

 [
 -{
    id: 1
    t: "1122"
    srn: "23"
  }
 -{
    id: 2
    t: "234"
    srn: "23"
  }
 -{
    id: 3
    t: "dd"
    srn: "44"
  }
 ]

如果我的输入是“444kkkdd”,显然任何元素都不匹配,所以它将444kkkdd放入数组9次。我只需要它存储一次。别误会,我知道为什么要打印9次,但我只需要一个解决方案就可以打印一次。我遇到了麻烦。

您可以保留添加ID的列表:

var addedIds = {};

if(par != $scope.shipper_ref_no){
    if (!addedIds[$scope.shipper_ref_no]) {
        addedIds[$scope.shipper_ref_no] = true;
        $scope.excludeds.push($scope.shipper_ref_no);
    }
}

你能给我一个完美的普朗凯拉吗。我早就该想到这个解决办法了。我可能需要一些Z来给我的大脑充电哈哈谢谢!嗯,奇怪。即使条件检查是否存在匹配的元素,不将其推入数组,它也会将所有数据推入数组$scope.shipper\u ref\u不包含哪种类型的值?一个字符串?你能用console.log addedis来确保你的数据被正确存储吗?另外,在那里抛出toLowerCase()可能会更好,以避免任何大小写不匹配
$scope.shipper\u ref\u no
是一个字符串。我给addedId做了一个控制台日志,数据被正确存储。