2017-02-21 12 views
-1

массива это и уникальное имя: DomicileNameСвяжите уникальные значения из JSon массива в раскрывающийся список в angularjs

$scope.domicile = {}; 
$scope.domicile.users = [{ 
    DomicileName: 'European', 
    PortFolioName: 'nternational Select x EM ADR', 
    Alias: 'ADR x EM', 
    Percentage: 1.0, 
    Ticker: 'ADR', 
    Category: 'ADRxEM', 
    SortOrder: 1 
}, { 
    DomicileName: 'European', 
    PortFolioName: 'International Select x EM ORD', 
    Alias: 'Ord x EM', 
    Percentage: 4, 
    Ticker: 'ORD', 
    Category: 'ADRxEM', 
    SortOrder: 1 
}, { 
    DomicileName: 'European', 
    PortFolioName: 'International Select with EM ADR', 
    Alias: 'ADR w EM', 
    Percentage: 4, 
    Ticker: 'ADR', 
    Category: 'ADRwEM', 
    SortOrder: '' 
}, { 
    DomicileName: 'Developed Market Non-European', 
    PortFolioName: 'International Select x EM ADR', 
    Alias: 'ADR x EM', 
    Percentage: 4, 
    Ticker: 'ADR', 
    Category: 'ADRxEM', 
    SortOrder: 1 
}]; 
+0

Так где же ваш код и чем проблема? –

+0

Я не могу написать функцию, которая фильтрует только уникальную DomicileName –

+0

Что вы пытаетесь достичь? – Mistalis

ответ

0

angular.module('myApp',[]).controller('MyCtrl', function ($scope) { 
 
    $scope.domicile = {}; 
 
    $scope.domicile.users = [{ 
 
      DomicileName: 'European', 
 
      PortFolioName: 'nternational Select x EM ADR', 
 
      Alias: 'ADR x EM', 
 
      Percentage: 1.0, 
 
      Ticker: 'ADR', 
 
      Category: 'ADRxEM', 
 
      SortOrder: 1 
 
     }, { 
 
      DomicileName: 'European', 
 
      PortFolioName: 'International Select x EM ORD', 
 
      Alias: 'Ord x EM', 
 
      Percentage: 4, 
 
      Ticker: 'ORD', 
 
      Category: 'ADRxEM', 
 
      SortOrder: 1 
 
     }, { 
 
      DomicileName: 'European', 
 
      PortFolioName: 'International Select with EM ADR', 
 
      Alias: 'ADR w EM', 
 
      Percentage: 4, 
 
      Ticker: 'ADR', 
 
      Category: 'ADRwEM', 
 
      SortOrder: '' 
 
     }, { 
 
      DomicileName: 'Developed Market Non-European', 
 
      PortFolioName: 'International Select x EM ADR', 
 
      Alias: 'ADR x EM', 
 
      Percentage: 4, 
 
      Ticker: 'ADR', 
 
      Category: 'ADRxEM', 
 
      SortOrder: 1 
 
     }]; 
 
     
 
     _init(); 
 
     
 
     function _init() { 
 
     \t $scope.domicile.users = _uniq($scope.domicile.users, 'DomicileName') 
 
     } 
 
     
 
     function _uniq(array, property){ 
 
     \t var flags = [], output = [], l = array.length, i; 
 
     for(i=0; i<l; i++) { 
 
      if(flags[array[i][property]]) continue; 
 
      flags[array[i][property]] = true; 
 
      output.push(array[i]); 
 
     } 
 
     return output; 
 
     } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<div ng-app="myApp"> 
 
    <div ng-controller="MyCtrl"> 
 
    <select> 
 
     <option ng-repeat="user in domicile.users">{{ user.DomicileName }}</option> 
 
    </select> 
 
    </div> 
 
</div>

+0

Спасибо большое сэр –

0

для моего подхода, вы должны получить уникальные значения , вы можете использовать современный фильтр функций объекта, элемент - текущий

$scope.uniqueDomicileUsers = $scope.domicile.users.filter(function(item, i, ar){ 
     return ar.indexOf(item) === i; 
    }) 

вы могли бы также проверить на какое-то имущество, которое должно быть уникальным, здесь, на втором примере, я использую имя домициля

$scope.uniqueDomicileUsers = $scope.domicile.users.filter(function(item, i, ar){ 
    return ar.indexOf(item) === i && ar[i]['DomicileName']==item['DomicileName']; 
}) 
Смежные вопросы