我正在尝试过滤一个对象数组以从中删除一些元素。我正在尝试使用jQuery.grep(),但我不知道这是否是这项工作的最佳工具。
我的对象数组中的每个元素都有一个“type”元素,我需要删除具有特定“type”值的元素。但这些值是未知的,因为它们将由用户提供。
这就是我所坚持的:
theNewArray = $.grep(database, function( n ) {
return ( n.type != /* I don't know what to put here */ );
});
我尝试在数组中获取所有“类型”值,但我不知道如何处理它。
答案 0 :(得分:2)
使用Array.filter
过滤掉您不想要或不想要的内容:
var numbers = [1, 2, 3, 4, 5];
// Filter out `3`
var result = numbers.filter(function (number) {
return number !== 3;
});
alert(result);

答案 1 :(得分:1)
好的,如果有任何其他菜鸟来到我身边,@Grundy让我走上了正确的道路。这是我最终在某些背景下使用的结果:
//Example of the original array of objects that I want to filter
var database = [
{
firstName:"John",
lastName:"Doe",
type:"Man"
},
{
firstName:"Jane",
lastName:"Doe",
type:"Woman"
},
];
//Here I put the user input in an array (simplified)
var filterArray = [];
$("#settings a.uncheck").each(function(){
filterArray.push($(this).data( "type" ));
});
//And here I remove the objects in the original array that have the "type" values in the user input
filteredDatabase = $.grep(database, function( n ) {
return ( filterArray.indexOf(n.type) == -1 );
});