object.hasOwnProperty()
は、実際に名前が入力されているプロパティをテストするため、実際には使用しません。テストの目的で、問題のプロパティの大文字小文字を変更する能力が必要です。
そのため、あなただけの既存のプロパティを確認することができない、あなたはプロパティ名をループに必要とされた値と照合して確認してください...
ジャスト小文字のオブジェクトをチェックしますプロパティ名を強制的な小文字の比較値と比較します。また、構文エラーや不要なコードがありました。詳細はコメントを参照してください。
var obj={
FOO: 10,
Special: true
};
function dupCheck(o, val){
var duplicateFlag = false; // Identifier names can't contain hyphens (-)
for(var prop in o){
// force property name and value to lower case for comparison
if(prop.toLowerCase() === val.toLowerCase()){
duplicateFlag = true;
break;
} // No else branch needed because duplicate starts off false
}
return duplicateFlag;
}
console.log(dupCheck(obj, "foo")); // true
console.log(dupCheck(obj, "SPECIAL")); // true
console.log(dupCheck(obj, "somethingElse"));// false
あなたの質問のタイトルは、ループに言及したが、あなたの例のコードは、1つを持っていません。私は、あなたのサンプルコードをより洗練されたものにする必要があると思うので、あなたがしようとしていることや自分自身を試みた方法を見ることができます。あなたの例にもデータはありません。 –
duplicate-flag =は失敗します。少なくとも有用なコードを提供してください。 –
いくつかのソリューションはここにあります:https://stackoverflow.com/questions/5832888/is-the-hasownproperty-method-in-javascript-case-sensitive –