angularjs foreach循环问题

时间:2016-03-03 13:18:28

标签: javascript angularjs foreach

我是AngularJS的新手,我想使用object文件中的数据构建json

这是我的json文件:

[
  {"id": 1, "name": "user1", "select": false },
  {"id": 2, "name": "user2", "select": false },
  {"id": 3, "name": "user3", "select": false },
  {"id": 4, "name": "user4", "select": false },
  {"id": 5, "name": "user5", "select": false }
]

现在我想使用foreach循环来检查哪个用户选择== true 并将此用户名推送到新的array。所以这是我的第一次尝试:

'use strict';

angular.module('apiOmat', [])


  .controller('UsersCtrl', function($scope, $http){
    $http.get('users.json').then(function(usersResponse) {
      $scope.users = usersResponse.data;
    });


$scope.submit = function(message,title){

var tempArr = [];
angular.forEach($scope.users.name, function(value,key){
 tempArr.push(value);
});

console.log(tempArr);

    $scope.messagebody = '{ "title" = "' + title + '", "message" = "' + message  + '"}'; 
}

 });

我也试过这个:

  $scope.submit = function(message,title){

    var tempArr = [];
    angular.forEach($scope.users, function(value,key){
     tempArr.push( { key :  value } );
    });

    console.log(tempArr);

控制台记录5对象,但没有任何值。只是 1:对象 2:对象 3:对象 ...

我知道缺少查询true或false。但我想在添加查询之前修复此步骤。

5 个答案:

答案 0 :(得分:3)

为此:

  

现在我想用foreach-loop来检查哪个用户已经有了   select == true并将此用户名推送到我的新数组

$scope.submit = function(message,title){
   var tempArr = [];
   angular.forEach($scope.users, function(item){
     if( item.select == true){
       tempArr.push(item);
     }
   });

另一个简单&更好的解决方案是使用filter代替。

$scope.submit = function(message,title){
    var tempArr = ($scope.users).filter(function(d){
         return (d.select == true);
    });
 });

console.log(tempArr)

答案 1 :(得分:1)

尝试以下

library(dplyr)
library(tidyr)
data %>%
  add_rownames() %>%
  gather("variable", "value", -rowname) %>%
  mutate(variable = gsub("_.*$", "", variable)) %>%
  group_by(rowname, variable) %>%
  summarise(mean = mean(value)) %>%
  spread(variable, mean)

答案 2 :(得分:1)

试试这个

DataGrid

答案 3 :(得分:1)

试试这个

var tempArr = [];
angular.forEach($scope.users, function(user){
    user.select && tempArr.push(user.name);
});

console.dir(tempArr);

答案 4 :(得分:0)

保持简单:

$scope.submit = function(message, title){
   var tempArr = [];
   angular.forEach($scope.users, function(user){
    if( user.select == true) //filter select:true only
      tempArr.push( {"name_as_key":user.name} ); //name_as_key can be replaced if intended to
   });