簡體   English   中英

使用過濾器和關鍵字搜索對象數組

[英]Search array of object with filter and keyword

我有一個數組,過濾器和關鍵字。 我想使用過濾器和關鍵字在數組中搜索,對象的結果數組也是如此。 就像第一個數組一樣。

var data = [
  {email: "usera@gmail.com",nama:"User A", Level:"Super Admin"},
  {email: "userb@gmail.com",nama:"User B", Level:"Super Admin"},
  {email: "userc@gmail.com",nama:"User C", Level:"Standart"},
  {email: "userd@gmail.com",nama:"User D", Level:"Standart"},
  {email: "usere@gmail.com",nama:"User E", Level:"Admin"},
  {email: "userf@gmail.com",nama:"User F", Level:"Standart"}
];
var filter = "Level";
var keyword = "Standart";

//--------Search


console.log(data);

您可以使用Array.prototype.filter函數,該函數接受回調並相應地進行過濾。 根據文檔:

filter()方法創建一個新數組,其中所有元素都通過了由提供的函數實現的測試。

回調是提供的函數,帶有三個參數。 從文檔中:

callback

函數是一個謂詞,用於測試數組的每個元素。 返回true以保留該元素,否則返回false,采用三個參數:

element

數組中正在處理的當前元素。

index

數組中正在處理的當前元素的索引。

array

調用了數組過濾器。

我們可以使用element來檢查當前元素並測試是否應該對其進行過濾,如下所示:

 var data = [ {email: "usera@gmail.com",nama:"User A", Level:"Super Admin"}, {email: "userb@gmail.com",nama:"User B", Level:"Super Admin"}, {email: "userc@gmail.com",nama:"User C", Level:"Standart"}, {email: "userd@gmail.com",nama:"User D", Level:"Standart"}, {email: "usere@gmail.com",nama:"User E", Level:"Admin"}, {email: "userf@gmail.com",nama:"User F", Level:"Standart"} ]; var filter = "Level"; var keyword = "Standart"; var filteredData = data.filter(function(obj) { return obj[filter] === keyword; }); console.log(filteredData); 

在這里,我們使用一個回調(測試)來檢查在filter指定的當前元素( obj )的屬性是否嚴格等於keyword 如果通過,它將被保留,因此將保留所有具有Valed Standart屬性Level對象。 您還可以使用ES6箭頭功能縮短此時間:

var filteredData = data.filter((obj) => obj[filter] === keyword);

這只是上面的簡寫。 實際上是相同的,根據當前元素的Level屬性嚴格等於keyword ,返回true或false。

您可以使用array.prototype.filter()函數通過自定義函數對數組進行過濾:

var data = [
  {email: "usera@gmail.com",nama:"User A", Level:"Super Admin"},
  {email: "userb@gmail.com",nama:"User B", Level:"Super Admin"},
  {email: "userc@gmail.com",nama:"User C", Level:"Standart"},
  {email: "userd@gmail.com",nama:"User D", Level:"Standart"},
  {email: "usere@gmail.com",nama:"User E", Level:"Admin"},
  {email: "userf@gmail.com",nama:"User F", Level:"Standart"}
];
var filter = "Level";
var keyword = "Standart";

//--------Search
var filtered_data = data.filter(function(item) {
    return item[filter] == keyword
})

console.log(filtered_data);

您可以使用filter()函數根據如下條件過濾掉元素:

> var data = [
  {email: "usera@gmail.com",nama:"User A", Level:"Super Admin"},
  {email: "userb@gmail.com",nama:"User B", Level:"Super Admin"},
  {email: "userc@gmail.com",nama:"User C", Level:"Standart"},
  {email: "userd@gmail.com",nama:"User D", Level:"Standart"},
  {email: "usere@gmail.com",nama:"User E", Level:"Admin"},
  {email: "userf@gmail.com",nama:"User F", Level:"Standart"}
];
> var newData=data.filter(function(x) { return x.Level == 'Standart'})
> console.log(JSON.stringify(newData))
[{"email":"userc@gmail.com","nama":"User C","Level":"Standart"},{"email":"userd@gmail.com","nama":"User D","Level":"Standart"},{"email":"userf@gmail.com","nama":"User F","Level":"Standart"}]

您可以只使用數組過濾器方法來完成您的目標。

 var data = [{ email: "usera@gmail.com", nama: "User A", Level: "Super Admin" }, { email: "userb@gmail.com", nama: "User B", Level: "Super Admin" }, { email: "userc@gmail.com", nama: "User C", Level: "Standart" }, { email: "userd@gmail.com", nama: "User D", Level: "Standart" }, { email: "usere@gmail.com", nama: "User E", Level: "Admin" }, { email: "userf@gmail.com", nama: "User F", Level: "Standart" }]; var filter = "Level"; var keyword = "Admin"; var filteredArray = data.filter((item) => item[filter] === keyword); console.log(filteredArray); 

你可以用$ .grep更好地做到這一點

var filter = "Level";
var keyword = "Standart";

這是一個演示:

 var data = [ {email: "usera@gmail.com",nama:"User A", Level:"Super Admin"}, {email: "userb@gmail.com",nama:"User B", Level:"Super Admin"}, {email: "userc@gmail.com",nama:"User C", Level:"Standart"}, {email: "userd@gmail.com",nama:"User D", Level:"Standart"}, {email: "usere@gmail.com",nama:"User E", Level:"Admin"}, {email: "userf@gmail.com",nama:"User F", Level:"Standart"} ]; var filter = 'Level'; var keyword = 'Standart'; var s = []; var s = $.grep(data,function(object,index){ return object.Level == 'Standart'; }); console.log(s); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 

暫無
暫無

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

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