Javascript 使用$.grep如何使用另一个数组作为筛选源筛选数组
我正试图使用另一个数组作为筛选源,将筛选应用于JSON数组。最有效的方法是什么 这是我的代码:我的目标是提取employeeFilter数组中雇员ID与employeeFilter数组中相同的所有元素。类似于SQL,其中employeeId位于(1,2)中Javascript 使用$.grep如何使用另一个数组作为筛选源筛选数组,javascript,jquery,json,Javascript,Jquery,Json,我正试图使用另一个数组作为筛选源,将筛选应用于JSON数组。最有效的方法是什么 这是我的代码:我的目标是提取employeeFilter数组中雇员ID与employeeFilter数组中相同的所有元素。类似于SQL,其中employeeId位于(1,2)中 var员工=[{ id:1, 姓名:“约翰” }, { id:2, 姓名:“保罗” }, { id:3, 姓名:“玛丽” }]; var employeeFilter=[1,2]; emps=$.grep(员工,职能(价值,i){ 对于(j=
var员工=[{
id:1,
姓名:“约翰”
}, {
id:2,
姓名:“保罗”
}, {
id:3,
姓名:“玛丽”
}];
var employeeFilter=[1,2];
emps=$.grep(员工,职能(价值,i){
对于(j=0;j
最有效的方法可能是根本不使用jQuery,而是使用类似于Array.filter的东西
var employees = [{
id: 1,
name: "john"
}, {
id: 2,
name: "paul"
}, {
id: 3,
name: "mary"
}];
var employeeFilter = [1, 2];
var emps = employees.filter(function(employee) {
return employeeFilter.indexOf(employee.id) != -1;
});
最有效的方法可能是根本不使用jQuery,而是使用类似于Array.filter的东西
var employees = [{
id: 1,
name: "john"
}, {
id: 2,
name: "paul"
}, {
id: 3,
name: "mary"
}];
var employeeFilter = [1, 2];
var emps = employees.filter(function(employee) {
return employeeFilter.indexOf(employee.id) != -1;
});
这是因为您总是在employeeFilter的第一次迭代中返回,而从未与employeeFilter中的其他值匹配。一个小改动,它将按要求工作:
var employees = [{
id: 1,
name: "john"
}, {
id: 2,
name: "paul"
}, {
id: 3,
name: "mary"
}];
var employeeFilter = [1, 2];
emps = $.grep(employees, function (value) {
var result = false;
for (j = 0; j < employeeFilter.length; j++) {
result = (value.id == employeeFilter[j]);
if(result)
break;
}
return result;
});
var员工=[{
id:1,
姓名:“约翰”
}, {
id:2,
姓名:“保罗”
}, {
id:3,
姓名:“玛丽”
}];
var employeeFilter=[1,2];
emps=$.grep(员工、职能(价值){
var结果=假;
对于(j=0;j
演示:这是因为您总是在employeeFilter的第一次迭代中返回,而从未与employeeFilter中的其他值匹配。一个小改动,它将按要求工作:
var employees = [{
id: 1,
name: "john"
}, {
id: 2,
name: "paul"
}, {
id: 3,
name: "mary"
}];
var employeeFilter = [1, 2];
emps = $.grep(employees, function (value) {
var result = false;
for (j = 0; j < employeeFilter.length; j++) {
result = (value.id == employeeFilter[j]);
if(result)
break;
}
return result;
});
var员工=[{
id:1,
姓名:“约翰”
}, {
id:2,
姓名:“保罗”
}, {
id:3,
姓名:“玛丽”
}];
var employeeFilter=[1,2];
emps=$.grep(员工、职能(价值){
var结果=假;
对于(j=0;j
演示:请注意,至少在Internet Explorer 8及以下版本(请参见此处:)中不支持Array.filter,但好消息是,您可以使用MDN页面中的polyfill解决此问题。Array.indexOf
也是如此。如果需要对IE8的支持,就必须使用polyfill,但是我们应该停止支持那些旧的废话。我完全同意你的观点!这就是为什么我对你的答案投了赞成票。这只是一个“以防万一”的通知:)请注意,Array.filter至少在Internet Explorer 8及以下版本中不受支持(请参见此处:),但好消息是,您可以使用MDN页面中的polyfill解决此问题。Array.indexOf
。如果需要对IE8的支持,就必须使用polyfill,但是我们应该停止支持那些旧的废话。我完全同意你的观点!这就是为什么我对你的答案投了赞成票。那只是一个“以防万一”的通知:)