【问题标题】:Angular JS copy Object to another into a for loopAngular JS将对象复制到另一个到for循环中
【发布时间】:2015-07-03 06:05:49
【问题描述】:

试图将一个 json 对象的一部分复制到另一个 json 对象(即过滤器)中,复制到一个 for 循环中,在条件语句下,它不起作用。

这项工作只是简单地写一个数组:

$scope.candidats=[];
for (i=0;i<omegaCandidats.length;i++){
    if (omegaCandidats[i].dateRdv==date){ 
        $scope.candidats.push(
            {
             "id"       :omegaCandidats[i].id,
             "prenom"   :omegaCandidats[i].prenom,
             "nom"      :omegaCandidats[i].nom,
             "heure"    :omegaCandidats[i].heure,
             "dateRdv"  :omegaCandidats[i].date
            }
        )
    };
};

这不起作用,这就是我想要做的。它的逻辑和应该工作:

$scope.candidats=[];
for (i=0;i<omegaCandidats.length;i++){
    if (omegaCandidats[i].dateRdv==date){ 
        $scope.candidats[i] = omegaCandidats[i];
    };
};

这一项工作,但只得到一个无用的for循环值:

$scope.candidats=[];
for (i=0;i<omegaCandidats.length;i++){
    if (omegaCandidats[i].dateRdv==date){ 
        $scope.candidats[0] = omegaCandidats[i];
    };
};

【问题讨论】:

  • 不要忘记接受答案(我也是为你的老问题说的)

标签: javascript arrays angularjs loops object


【解决方案1】:

我认为这应该可行:

$scope.candidats=[];
    for (i=0;i<omegaCandidats.length;i++){

        if (omegaCandidats[i].dateRdv==date){ 

            //$scope.candidats.push(omegaCandidats[i]);

            $scope.candidats.push(angular.copy(omegaCandidats[i]));
            //copy will create a new reference for your object.
        };
    };

你的代码对我来说不合逻辑:

$scope.candidats=[];
    for (i=0;i<omegaCandidats.length;i++){
        if (omegaCandidats[i].dateRdv==date){ 
            $scope.candidats[i] = omegaCandidats[i]; // This can't work because $scope.candidats[i] is not defined.
            // You would also have an inconsistent array
        };
    };

【讨论】:

  • 哇,非常感谢,让我们试试这个和其他解决方案,你太棒了!
  • 我已经编辑了我的答案。我不确定您是否需要复制您的值。
  • 是的!它真的很好用,非常感谢,它会为我节省很多时间,我也会尝试过滤器,它更合乎逻辑。 Angular 很棒。
  • 是的,对于这个特殊的问题,过滤器更合适
  • 关于不一致的数组,我同意!再次非常感谢。这将有助于我的项目nicolash.org/angular/app7.html
【解决方案2】:

你可以使用过滤数组的方法,试试这个:

$scope.candidats = omegaCandidats.filter(function(item) {
    return item.dateRdv==date;
});

【讨论】:

  • :) 领先你 8 秒
  • 非常感谢,你给我留下了深刻的印象!
【解决方案3】:

如何使用过滤器:

$scope.candidats = omegaCandidats.filter(function(candidat){ 
    return candidat.dateRdv == date;
});

【讨论】:

    猜你喜欢
    • 2016-03-17
    • 1970-01-01
    • 2022-11-26
    • 1970-01-01
    • 2015-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-08-27
    • 1970-01-01
    相关资源
    最近更新 更多