我有一个数组,过滤器和关键字。 我想使用过滤器和关键字在该数组中搜索,也使用对象的结果数组。就像第一个阵列一样。
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);
答案 0 :(得分:3)
您可以使用Array.prototype.filter
函数进行回调并相应地过滤。根据文件:
filter()
方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。
回调是提供的函数,它有三个参数。来自文档:
<强>
callback
强>Function是一个谓词,用于测试数组的每个元素。返回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);
这里,我们使用一个回调(测试)来检查obj
中指定的当前元素(filter
)的属性是否严格等于keyword
。如果它通过,则保留它,因此保留具有值为Level
的属性Standart
的所有对象。您也可以使用ES6 arrow functions缩短此内容:
var filteredData = data.filter((obj) => obj[filter] === keyword);
这只是上述的简写。它实际上是相同的,根据当前元素的Level
属性是否严格等于keyword
来返回true或false。
答案 1 :(得分:0)
您可以使用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"}]
答案 2 :(得分:0)
您可以使用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);
答案 3 :(得分:0)
您可以在此处使用数组过滤器方法来实现目标。
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);
&#13;
答案 4 :(得分:0)
你可以用更好的方式使用$ .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>