【问题标题】:Push Item From One Array Into another Array in Angular在Angular中将项目从一个数组推送到另一个数组
【发布时间】:2016-11-04 15:51:41
【问题描述】:


我正在使用 AngularJS 编写一个应用程序,并且想知道如何将一个项目从一个数组推送到另一个数组。

这里是示例代码:

$scope.tasks = [
     {title: "Do the dishes"},
     {title: "Walk the dog"},
];
$scope.addToTasksDone = function() {// IM FAILNG HERE};
$scope.tasksDone = [];

如何将值为“Do the bowls”的项目推送到 tasksDone 数组?

【问题讨论】:

  • 从数组中取出元素,得到它的索引&splice它,然后把它推到另一个数组中
  • 如何从这个数组中取出来?
  • 将唯一值传递给函数,遍历列表并通过唯一 ID 查找元素
  • 你有这方面的例子吗?
  • 您可以避免使用数组并为您的任务对象添加一个属性“finished: true”。在我看来,这将是更好的设计。

标签: javascript arrays angularjs


【解决方案1】:
$scope.tasks = [
{title: "Do the dishes"},
{title: "Walk the dog"},
];
$scope.tasksDone = [];
$scope.addToTasksDone = function(index) {// IM FAILNG HERE};
$scope.tasksDone.push($scope.tasks[index]);
}

【讨论】:

  • 它只推送数组的第一项。
  • 这只是一个示例使用索引。
  • 你必须提供像 $scope.addToTasksdone(1) 这样的索引
【解决方案2】:
$scope.tasks.push(yourObject)

这个问题是在here 之前提出的

【讨论】:

    【解决方案3】:
    $scope.tasks = [
        { title: "Do the dishes" },
        { title: "Walk the dog" }
    ]; 
    $scope.tasksDone = [];
    for(var i in $scope.tasks){
        $scope.tasksDone.push($scope.tasks[i]);
    }
    

    【讨论】:

      【解决方案4】:
      $scope.tasks = [
      {title: "Do the dishes"},
      {title: "Walk the dog"},
      ];
       $scope.tasksDone = [];
      angular.forEach(tasks , function(value, key) {
        this.push(key + ': ' + value);
      },tasksDone);
      };
      

      【讨论】:

        【解决方案5】:

        您可以使用以下代码将某些特定值推送到新数组

        $scope.tasks = [
             {title: "Do the dishes"},
             {title: "Walk the dog"},
        ];
        $scope.tasksDone = [];
        $scope.addToTasksDone = function(specificValue) {
                                   // IM FAILNG HERE};
             tasks.forEach( (object) => {
                  if ( object[title] === specificValue ) {
                        $scope.tasksDone.push(object);
                  }
             });
        }
        

        上面的代码会将每个包含值的对象推送为特定的值... 您可以通过传递“做菜”值作为参数来调用 addToTasksDone。

        示例调用

        $scope.addToTasksDone("Do the dishes");
        

        问候

        阿杰

        【讨论】:

          【解决方案6】:

          这是正确的代码。

          我在 ng-repeat 中有列表,所以我必须将 $scope.addToTasksDone(index) 更改为 $scope.addToTasksDone($index)

          当然也可以在HTML 示例中: ng-click="addToTasksDone($index)

          【讨论】:

            猜你喜欢
            • 2014-02-04
            • 2020-08-23
            • 1970-01-01
            • 2022-06-13
            • 1970-01-01
            • 2021-06-20
            • 2021-12-26
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多