2017-07-12 4 views
0
var obj={}; 
var duplicate-flag = false; 
if(obj.hasOwnProperty(value)) 
{ 
duplicate-flag = true; 
} 
else { 
flag=false; 
} 

私は上記のコードを使用して重複のリスト入力テキスト要素をチェックしていますが、大文字と小文字が区別されているため失敗しています。JavaScriptで大文字小文字を区別しないかどうかをチェックする方法object.hasOwnProperty(value);

+0

あなたの質問のタイトルは、ループに言及したが、あなたの例のコードは、1つを持っていません。私は、あなたのサンプルコードをより洗練されたものにする必要があると思うので、あなたがしようとしていることや自分自身を試みた方法を見ることができます。あなたの例にもデータはありません。 –

+0

duplicate-flag =は失敗します。少なくとも有用なコードを提供してください。 –

+0

いくつかのソリューションはここにあります:https://stackoverflow.com/questions/5832888/is-the-hasownproperty-method-in-javascript-case-sensitive –

答えて

1

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

+0

あなたの 'if'の中に' break; 'は必要ありませんか? –

+0

なぜ気になるのですか?それが「真」になると、再び「偽」になることはありません。 –

+0

@ PM77-1あなたは何を得ているのか分かります。はい、パフォーマンスを向上させる可能性があります。私は答えを更新します。 –

関連する問題