簡體   English   中英

angularjs foreach循環問題

[英]angularjs foreach loop issue

我是AngularJS的新手,我想用json文件中的數據構建object

這是我的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循環來檢查哪個用戶具有select == 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:對象...

我知道對真或假的查詢丟失了。 但是我想在添加查詢之前修復此步驟。

為了這:

現在我想使用一個foreach循環來檢查哪個用戶具有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)

嘗試下面

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

var tempArr = [];
angular.forEach($scope.users, function(i,j){

if(i.select == true)
{
 tempArr.push( i.name );
  }
});

console.log(tempArr);

嘗試這個

   $scope.submit = function(message,title){
   var tempArr = [];
   angular.forEach($scope.users, function(user){
   tempArr.push( {"name":user.name} );
   });

試試這個

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

console.dir(tempArr);

把事情簡單化:

$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
   });

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM