2016-12-07 62 views
0

我正在使用grep從我的數組中刪除一個對象。它會工作,如果鍵是相同的,但我希望它從數組中刪除,如果它匹配值myVar(我使用的值,因爲它將是唯一的),但我無法進入對象,因爲我只能訪問索引。使用Grep使用值作爲編號

如何從我的數組中刪除包含在myVar等中的任何巴黎值的對象?

function myFunction(){ 
     var arr = [ 
      {country:"USA"}, 
      {country:"France"}, 
      {country:"England"}, 
      {city:"New York"}, 
      {city:"Paris"}, 
      {city:"London"}, 
     ]; 

     var myVar = 'Paris';//Change variable 
     arr = $.grep(arr, function(data, index) { 
      return data.GET_TO_MY_VALUE!= myVar; 
     }); 
     console.log(arr); 
    } 
    myFunction(); 
+0

什麼是預期的輸出? 「{city:」Paris「}'?或「[country」:「USA」},{「country」:「France」},{「country」:「England」},{「city」:「New York」},{「city」倫敦「}]'? – Rayon

+0

刪除包含Paris的對象 – ottz0

+0

使用Array.filter'arr = arr.filter(function(data,index){ return data.city!= myVar; });'For ** contains **,use RegEx' var regex = new RegExp(myVar,'i'); arr = arr.filter(function(data,index){ return regex.test(data.city); });' – Tushar

回答

2

返回的grepped arrayfunction

有多個條件,使用||操作。

function myFunction(myVar) { 
 
    var arr = [{ 
 
    country: "USA" 
 
    }, { 
 
    country: "France" 
 
    }, { 
 
    country: "England" 
 
    }, { 
 
    city: "New York" 
 
    }, { 
 
    city: "Paris" 
 
    }, { 
 
    city: "London" 
 
    }]; 
 
    return $.grep(arr, function(data, index) { 
 
    return (data.city && data.city != myVar) || (data.country && data.country != myVar); 
 
    }); 
 
} 
 
console.log(JSON.stringify(myFunction('Paris'))); 
 
console.log(JSON.stringify(myFunction('England')));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>