2016-07-22 15 views
0

grep関数が機能していないのは本当に混乱しています。私はそうのようなオブジェクトの配列があります

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

しかし、私が得るすべては空の配列です:

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

と私はgrepのを使用して、ID 2を削除しようとしているが、私は私がやるだろうと思いました毎回。私はここで間違って何をしていますか?

答えて

3

あなたはではありません。ブール式です。あなたはreturn値としてそれを提供する必要があります

return e.id != 2; 

returnがなければ、e.id != 2;は何もしません。その式の結果は、忘却の中に消えます。 $.grepコールバック関数の戻り値はすべての要素に対してundefinedです。これは偽であるため、要素のいずれも一致せず、結果として空の配列になります。

+0

は_ _「あなたは値を返す必要があり、」ブールブール値を返し、なければなりません'false'' value ... +1 – Rayon

+0

はい、' e.id!= 2'はブール式ですので問題ありません。 – trincot

+0

ええ、しかし_あなたは値を返す必要があります_私には不完全なようです...この文脈の下では、それはいいです.. – Rayon

1

grep関数でリターンを使用します。

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

jqueryのドキュメントhttp://api.jquery.com/jquery.grep/

あたりとしての機能は、未定義 `...おそらく...

関連する問題