2016-05-31 4 views
0

オブジェクトの配列を検索する際に問題が発生しています。基本的に私のページで必要となるのは、氏名、ユーザー名、電子メール、パスワードなど、私が入力した情報を使って新しい「クライアント」を作成することです。これらのクライアントのそれぞれは、以下に示すように、配列内のオブジェクトです。配列内のオブジェクトの問題Javascript

var clientlist = [{"username":"John","fullname":"John Doe", 
"email":"[email protected]","type":"client","password":"jdoe2"}, 

このクライアントは既にjsファイル内に作成されています。この同じ構造でこのアレイに追加する新しいオブジェクトを作成する必要があります。例えば、

var clientlist = [{"username":"Peter","fullname":"Peter Jones", 
"email":"[email protected]","type":"client","password":"pjones1"}, 

私は、コードを書かれているが、それは私がFirebugのを実行したときに、私はすべての要素が「値が」ユーザー名を除き、正しく追加されていることを確認することができ、正常に動作しません。私が追加しているユーザー名が既に存在するかどうかを確認するためにユーザー名を検索することができない場合は、構文ミスかもしれません。私は以下の完全なコードを残し、支援のために事前に感謝します!

var clientlist = [{"username":"John","fullname":"John Doe", 
"email":"[email protected]","type":"client","password":"jdoe2"}, 

var Client = {}; 

function NewClient(){ 
var found; 
var user = $("#username").val(); 

for (var i = 0; i < clientlist.length; i++) { 
    if (clientlist[i].username == user) { 
     found = true; 
    }else{ 
     found = false; 
    } 
} 

if (found == true){ 
    $("#msj").html("User already exists!"); 
} 
else if(found == false){ 
    Client["fullname"] = $("#fullname").val(); 
    Client["username"] = user; 
    Client["email"] = $("#email").val(); 
    Client["type"] = "client"; 
    Client["password"] = $("#password").val(); 

    clientlist[clientlist.length] = Client; 

    $("#msj").html("New client has been created"); 
} 

}

+1

を。 'var" clientlist = [{"username": "John"、 "fullname": "John Doe"、 "email": "[email protected]"、 "type": "client"、 "password": "jdoe2"}] ' –

+0

あなたは私が昨日あなたに与えた解決策からループ内で' break'を使うことを無視しました。あるいは、 'found = false'を設定して' else'を削除してください。 – charlietfl

+0

'var Client = {};'は 'NewClient()'関数内にある必要があります。 – nnnnnn

答えて

1

ほとんどミスは:

  • が実際に以下のコードは、いくつかの修正動作するはず

新しく追加されたクライアントにプッシュし忘れたclientlist配列を閉じるには、忘れましたあなたが途中で作った間違い。

var clientlist = [{ 
    "username": "John", 
    "fullname": "John Doe", 
    "email": "[email protected]", 
    "type": "client", 
    "password": "jdoe2" 
}]; 

function NewClient() { 
    var found = false; 
    var user = $("#username").val(); 

    for (var i = 0; i < clientlist.length; i++) { 
    if (clientlist[i].username == user) { 
     found = true; 
    } else { 
     found = false; 
    } 
    } 

    if (found) { 
    $("#msj").html("User already exists!"); 
    } else { 
    var newUser = { 
     fullname: $("#fullname").val(), 
     username: user, 
     email: $("#email").val(), 
     type: "client", 
     password: $("#password").val() 
    } 
    clientlist.push(newUser); 
    $("#msj").html("New client has been created"); 
    } 
} 

あなたのためのフィドルメイド:あなたは `clientlist`値の末尾に` `]が欠落している http://codepen.io/gabrielgodoy/pen/xOxoWw?editors=1011

+0

私はこれを試しましたが、Firebugのユーザー名を使ってオブジェクトをチェックしても、 ""ジョンの代わりに、アイデアはありますか? – Gonzalo

+0

@hendrix、HTMLに '#username'要素があるかどうか確認してください。私はコンソールでCodepenを更新しました。ユーザー名が入力されていることを確認してください。 ここに:http://codepen.io/gabrielgodoy/pen/xOxoWw?editors=1011 –

+0

はい私は#usernameを持っています。これは私のコードが今ではあなたが私にフィドルで示したもの私のわずかな違いはうまくいかない! – Gonzalo

0

私が推測するには、いくつかの問題を抱えています。

  1. ForループclientList
  2. のブラケットを終了し、
  3. た変数は、クライアントリストに新規ユーザーをプッシュ。

私はそれらを修正して、以下のことが含まれています。あなたが作った

<script> 
var clientlist = [{"username":"John","fullname":"John Doe", 
"email":"[email protected]","type":"client","password":"jdoe2"}] 

function NewClient(){ 
    var found=false; 
    var user = $("#username").val(); 

    for (var i = 0; i < clientlist.length; i++) { 
     if (clientlist[i].username==user) { 
      found = true; 
      break; 
     } 
    } 

    if (found){ 
     $("#msj").html("User already exists!"); 
    } 
    else{ 
     var newUser={ 
      fullname:$("#fullname").val(), 
      username:user, 
      email:$("#email").val(), 
      type:"client", 
      password:$("#password").val() 
     } 

     clientlist.push(newUser); 
     $("#msj").html("New client has been created"); 
    } 
} 
</script> 
+0

まだアイデアはありませんか? – Gonzalo

関連する問題