2017-07-04 65 views
-1

我有一個ID的多個數據,我想篩選這樣如何基於在angularJS ID過濾器陣列

$scope.mpArray =[ 
{ Id: 1, Name: Madhu, Address: Upal }, 
{ Id: 1, Name: Chandu, Address: Upal }, 
{ Id: 2, Name: Srinu, Address: Kphb }, 
{ Id: 2, Name: Vijay, Address: kphb }, 
{ Id: 3, Name: Ajay, Address: Banglore }, 
{ Id: 3, Name: Narsi, Address: Banglore }, 
{ Id: 3, Name: Peter, Address: Banglore }, 
]; 

我想我過濾陣列這樣

var FilterArray = [ 
{ Id: 1,Madhu, Chandu}, 
{ Id: 2, Srinu, Vijay}, 
{ Id: 3, Ajay, Narsi, Peter}, 
]; 
+0

爲什麼ID是不是唯一的? –

+0

我將該ID作爲Departmentid,因此它不是唯一的 – Srinu

+0

嘗試在ID上使用'groupBy'# –

回答

0

在我的數據首先你需要改變你的FilterArray

[ 
    { 
    "Id": 1, 
    "Name": [ 
     "Madhu", 
     "Chandu" 
    ] 
    }, 
    { 
    "Id": 2, 
    "Name": [ 
     "Srinu", 
     "Vijay" 
    ] 
    }, 
    { 
    "Id": 3, 
    "Name": [ 
     "Ajay", 
     "Narsi", 
     "Peter" 
    ] 
    } 
] 

注意,名稱是一個array。你的問題的FilterArray

var FilterArray = [ 
{ Id: 1,Madhu, Chandu}, 
{ Id: 2, Srinu, Vijay}, 
{ Id: 3, Ajay, Narsi, Peter}, 
]; 

不包含數組中的有效JSON對象,所以你需要的結構轉變爲一個地方在FilterArray JSON對象像上面的第一個結構中添加一個新的關鍵Name 。然後下面的代碼很好。

$(document).ready(function(){ 
 
var myArray =[ 
 
{ Id: 1, Name: "Madhu", Address: "Upal" }, 
 
{ Id: 1, Name: "Chandu", Address: "Upal" }, 
 
{ Id: 2, Name: "Srinu", Address: "Kphb" }, 
 
{ Id: 2, Name: "Vijay", Address: "kphb" }, 
 
{ Id: 3, Name: "Ajay", Address: "Banglore" }, 
 
{ Id: 3, Name: "Narsi", Address: "Banglore" }, 
 
{ Id: 3, Name: "Peter", Address: "Banglore" }, 
 
]; 
 
var FilterArray = []; 
 
var matched; 
 
    for(var i=0;i<myArray.length; i++){ 
 
    matched = false; 
 
    var myArrayId = myArray[i].Id; 
 
     for(var j=0; j<FilterArray.length; j++){ 
 
     var FilterArrayId = FilterArray[j].Id; 
 
      if(myArrayId === FilterArrayId){ 
 
       matched = true; 
 
       FilterArray[j].Name.push(myArray[i].Name); 
 
       // no need to loop further 
 
       break; 
 
      } 
 
     } 
 
     if(!matched){ 
 
      var obj = { 
 
       'Id' : myArrayId, 
 
       'Name' : [myArray[i].Name], 
 
      } 
 
      FilterArray.push(obj); 
 
     } 
 
    } 
 
console.log(FilterArray); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

+0

謝謝非常多的@AKA,它的工作 – Srinu

0

試試這個

var mpArray =[ 
 
{ Id: 1, Name: 'Madhu', Address: 'Upal' }, 
 
{ Id: 1, Name: 'Chandu', Address: 'Upal' }, 
 
{ Id: 2, Name: 'Srinu', Address: 'Kphb' }, 
 
{ Id: 2, Name: 'Vijay', Address: 'kphb' }, 
 
{ Id: 3, Name: 'Ajay', Address: 'Banglore' }, 
 
{ Id: 3, Name: 'Narsi', Address: 'Banglore' }, 
 
{ Id: 3, Name: 'Peter', Address: 'Banglore' }, 
 
]; 
 

 
var filterObject = {}; 
 

 
mpArray.forEach(function (item) { 
 
    if (!filterObject[item.Id]) { 
 
     filterObject[item.Id] = []; 
 
    } 
 
    
 
    filterObject[item.Id].push(item.Name); 
 
}); 
 

 
console.log(filterObject);

+0

請問過濾後他想以什麼樣的數據形式進行分析。 –

0
$scope.mpArray =[ 
        { Id: 1, Name: 'Madhu', Address: 'Upal' }, 
        { Id: 1, Name: 'Chandu', Address: 'Upal' }, 
        { Id: 2, Name: 'Srinu', Address: 'Kphb' }, 
        { Id: 2, Name: 'Vijay', Address: 'kphb' }, 
        { Id: 3, Name: 'Ajay', Address: 'Banglore' }, 
        { Id: 3, Name: 'Narsi', Address: 'Banglore' }, 
        { Id: 3, Name: 'Peter', Address: 'Banglore' }, 
        ]; 
        var FilterArray = []; 
        var FilteredArrayIds=[]; 
        $scope.mpArray.forEach(
              function(detailObj) { 
               if(FilteredArrayIds.indexOf(detailObj.Id)==-1) 
               return FilteredArrayIds.push(detailObj.Id); 
             }); 
        for(var i=0; i<FilteredArrayIds.length;i++) 
        { 
          var result = $scope.mpArray.filter(function(obj) { 
           return obj.Id == FilteredArrayIds[i]; 
          }); 
          var rsltNames = result.map(function(obj){ 
          return obj.Name; 
          }) 
          var filteredObj ={ 
          id:FilteredArrayIds[i]+',' +rsltNames.join() 
          } 
          FilterArray.push(filteredObj); 
        } 
        console.log(filteredObj) 
+0

@Srinu它肯定會爲你工作。 –

+0

而不是粘貼整個代碼,請解釋它的作用。 – Mistalis