我真的很困惑为什么我的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;
});
然而,我每次得到的都是一个空数组。我在这里做错了什么?
答案 0 :(得分:3)
你不是返回布尔表达式。您应该将其提供为return
值:
return e.id != 2;
没有return
,e.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/
该函数应返回布尔值