0

Codecademyで JavaScript コースに取り組んでいます。この演習ではadd、人を配列に追加する関数を作成し、contactsプロンプトを使用してユーザーから情報を取得し、その後関数を呼び出して配列list内のすべての人をcontactsコンソールに出力することになっています。 .

以下のコードを実行すると、contacts配列内の既存の 2 人の人物が一覧表示されます"undefined undefined"が、プロンプトで追加しようとした人物が出力されます。contactsしかし、の長さを印刷すると、 と表示さ3れるので、人が追加されました。

どんな助けでも大歓迎です。

var bob = {
  firstName: "Bob",
  lastName: "Jones",

  phoneNumber: "(650) 777 - 7777",
  email: "bob.jones@example.com"
};

var mary = {
  firstName: "Mary",
  lastName: "Johnson",

  phoneNumber: "(650) 888 - 8888",
  email: "mary.johnson@example.com"
};

var contacts = new Array(bob, mary);

function printPerson(person) {
  console.log(person.firstName + " " + person.lastName);
}

function list() {
  var length = contacts.length;
  var i;
  for (i = 0; i < length; i++) {
    printPerson(contacts[i]);
  }
}

/*Create a search function
then call it passing "Jones"*/

var search = function(lastName) {
  var number = contacts.length;
  for (i = 0; i < number; i++) {
    if (contacts[i].lastName === lastName) {
      printPerson(contacts[i]);
    }
  }
};

var add = function(firstName, lastName, email, telephone) {
  contacts[contacts.length] = new Object(firstName, lastName, email, telephone);
};

var firstName = prompt("What is your first name");
var lastName = prompt("What is your last name");
var email = prompt("What is your email");
var telephone = prompt("What is your phone number");
add(firstName, lastName, email, telephone);
list();

4

1 に答える 1

3

プロパティを持つ新しいオブジェクトを作成するには、プロパティごとにプロパティ名とプロパティ値の両方を指定する必要があります。new Object()必要なオブジェクトのタイプを作成しない 値のリストをコンストラクターに渡しただけです。

プロパティを持つ新しいオブジェクトを作成する方法はいくつかありますが、この場合は、リテラル オブジェクト宣言形式を使用するのがおそらく最も簡単です{name1: val1, name2: val2}。これを行うには、次のコードを変更します。

var add = function(firstName, lastName, email, telephone){
    contacts[contacts.length] = new Object(firstName, lastName, email, telephone);
}; 

これに:

var add = function(firstName, lastName, email, telephone){
    contacts[contacts.length] = {firstName: firstName, lastName: lastName, email: email, phoneNumber: telephone};
}; 

ここで動作します: http://jsfiddle.net/jfriend00/Ea7B5/

于 2012-08-26T22:50:03.020 に答える