循环遍历数组并将每个索引绑定到AngularJS中的另一个数组

时间:2018-03-17 17:26:04

标签: javascript arrays angularjs for-loop

我有一个对象和一个数组定义,

      $scope.multipleTransferGotten = [];

      $scope.newParameters = {
        UserId: "",
        Udid:"",
        TransType: "",
        SourceAccNumber: "",
        SourceAccName:"",
        BeneficiaryAccName: "",
        BeneficiaryAccNumber: "",
        Amount: "",
        Remarks: "",
        DestBankCode:"",
        AuthToken:"",
        UseToken: ""
      };

我有以下代码行,它在会话中选择一个数组;

 $scope.pickedTransfers = bank.getPaymentList($scope.paymentList);

然后我循环遍历从会话中获取的数组并将其每个结果绑定到$ scope.newParamaters并推入$ scope.multipleTransferGotten,如下所示;

 for (var i = 0; i < $scope.pickedTransfers.length; i++)
      {
        $scope.newParameters.UserId = bank.getUserId();
        $scope.newParameters.Udid = bank.getUuid();
        $scope.newParameters.TransType = $scope.pickedTransfers[i].TransType;
        $scope.newParameters.SourceAccNumber = $scope.pickedTransfers[i].SourceAccNumber;
        $scope.newParameters.SourceAccName = bank.getAccountInfo()[i].CUSNAME;
        $scope.newParameters.BeneficiaryAccName = $scope.pickedTransfers[i].BeneficiaryAccName;
        $scope.newParameters.BeneficiaryAccNumber = $scope.pickedTransfers[i].BeneficiaryAccNumber;
        $scope.newParameters.Amount = $scope.pickedTransfers[i].Amount;
        $scope.newParameters.Remarks = $scope.pickedTransfers[i].Remarks;
        $scope.newParameters.DestBankCode = $scope.pickedTransfers[i].DestBankCode;
        $scope.newParameters.AuthToken = $localStorage.AuthToken;
        $scope.newParameters.UseToken = bank.getUseToken();

        $scope.multipleTransferGotten.push($scope.newParameters);
      }

我面临的问题是只有数组中的最后一个索引填满了 $ scope.multipleTransferGotten数组,即如果我循环遍历2个数组,只有$ scope.pickedTransfers [1]两次填充$ scope.multipleTransferGotten数组。

请,我需要帮助,我希望它能读取,推送和存储$ scope.pickedTransfers [0]和$ scope.pickedTransfers [1]。谢谢

1 个答案:

答案 0 :(得分:1)

由于相同的对象引用,您覆盖同一个对象并为所有条目获取相同的值。

您需要一个没有属性的空对象,并向对象添加所有想要的属性,然后您可以将此对象推送到该数组。

我建议使用临时变量,该变量不属于$scope

var newParameters;
for (var i = 0; i < $scope.pickedTransfers.length; i++) {
    newParameters = {};
    newParameters.UserId = bank.getUserId();
    // ...

    $scope.multipleTransferGotten.push(newParameters);
}