如何使用jQuery.grep()动态过滤数组?

时间:2015-11-22 08:54:13

标签: javascript jquery arrays

我正在尝试过滤一个对象数组以从中删除一些元素。我正在尝试使用jQuery.grep(),但我不知道这是否是这项工作的最佳工具。

我的对象数组中的每个元素都有一个“type”元素,我需要删除具有特定“type”值的元素。但这些值是未知的,因为它们将由用户提供。

这就是我所坚持的:

theNewArray = $.grep(database, function( n ) {
    return ( n.type != /* I don't know what to put here */ );
});

我尝试在数组中获取所有“类型”值,但我不知道如何处理它。

2 个答案:

答案 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 );
});