ループごとにアンダースコア内で値を返しているときに、少なくとも1つは理解できない奇妙な動作に気付きました。私のコードは次のとおりです。基本的に、次のように、要素がその ID に基づいて配列に既に存在するかどうかをテストします。
var elements = [{id: "1", name : "foo"},{id : "3", name: "bar"}];
element_exists = function(key, val){
_.each(elements,function(element){
console.log(element[key], val);
if(element[key] == val){
console.log("element exists");
return true;
}
});
return false;
};
console.log("true : ", element_exists("id", "1"));
console.log("false : ", element_exists("id", "2"));
コンソールに次のログが表示されます。
1 1
element exists
3 1
true : false
1 2
3 2
false : false
私の質問は、関数が最初の要素に対して true を返さないのはなぜですか?