即使匹配发生,$ .grep也会返回空数组

时间:2016-07-22 18:54:56

标签: javascript jquery arrays

我真的很困惑为什么我的grep功能不起作用。我有一组像这样的对象:

$scope.kit = [{id: 1, producer: "company", category: "hardware" }, 
              {id: 2, producer: "company2", category: "hardware"}];

我试图使用grep删除id 2,我想我会这样做:

$scope.kit = 
$.grep($scope.kit, function(e) {
    e.id != 2;
});

然而,我每次得到的都是一个空数组。我在这里做错了什么?

2 个答案:

答案 0 :(得分:3)

你不是返回布尔表达式。您应该将其提供为return值:

return  e.id != 2;

没有returne.id != 2;没有做任何事情:该表达式的结果消失在遗忘之中。然后,对于所有元素,$.grep回调函数的返回值为undefined,这是假的,因此没有元素匹配,从而产生一个空数组。

答案 1 :(得分:1)

在grep函数中使用return。

$.grep($scope.kit, function(e) {
    return e.id != 2;
});

根据jquery docs http://api.jquery.com/jquery.grep/

该函数应返回布尔值