1

Javascriptは大文字と小文字を区別することを完全に理解していますが、ifステートメントに関してはSamはsamと等しくありません。この関数を呼び出すプロンプトボックスを作成しました。プロンプトボックスに名前を入力すると、samをSamに変換するか、両方をTrueにします。

function search(name) {
var ourContacts = contacts.length;
for (var i = 0; i < ourContacts; i++) {
if (contacts[i].name === name) {
printdog(contacts[i]);
}
}
}

理解を深めるために必要な場合は、これが私のスクリプト全体です。

function dog(name, breed, age, color, weight, owner, owneraddress) {
    this.name = name;
    this.breed = breed;
    this.age = age;
    this.color = color;
    this.weight = weight;
    this.owner = owner;
    this.owneraddress = owneraddress;
}
//My Dogs
var sam = {
    name: "Sam",
    breed: "Chihuahua",
    age: 7,
    color: "White",
    weight: "7 lb",
    owner: "Bourton",
    owneraddress: "44 Berkley Drive"
};
var max = {
    name: "Max",
    breed: "Chihuahua",
    age: 4,
    color: "Brown",
    weight: "5 lb",
    owner: "Smith",
    owneraddress: "134 Door Ave"
};

//My array of dogs
var contacts = [sam, max];

function printdog(dog) {
    console.log(dog.name + " " + dog.owner);
}
function list() {
var ourContacts = contacts.length;
for (var i = 0; i < ourContacts; i++) {
printdog(contacts[i]);
}
}
list();
function search(name) {
var ourContacts = contacts.length;
for (var i = 0; i < ourContacts; i++) {
name = name.toLowerCase;
if (contacts[i].name === name) {
printdog(contacts[i]);
}
}
}

<button onclick="search(prompt('Search Dogs Name'))">Search for Dog</button>
4

3 に答える 3

4

.toUpperCase()あなたは平等比較者の前に両端で何かをするかもしれません

于 2012-07-27T19:40:50.833 に答える
1

すべてを小文字または大文字にします(検索とデータの両方)。すでにこれを実行しようとしましnameたが、オンではありませんcontacts[i].name(これらは、「Sam」および「Max」という名前であるため、小文字の入力文字列と等しくなることはありません)。

また、関数を実行するのを忘れました-関数への参照を取得しただけです。

function search(name) {
    var ourContacts = contacts.length;
    name = name.toLowerCase();
//                         ^^
    for (var i = 0; i < ourContacts; i++) {
        if (contacts[i].name.toLowerCase() === name) {
//                          ^^^^^^^^^^^^^^
            printdog(contacts[i]);
        }
    }
}
于 2012-07-27T19:41:19.757 に答える
1

両方のオペランドでJavascript.toUpperCase ()メソッドを使用できます。

if (contacts[i].name.toUpperCase() === name.toUpperCase())

または、両方のオペランドで.toLowerCase()メソッドを使用することもできます。

if (contacts[i].name.toLowerCase() === name.toLowerCase())
于 2012-07-27T19:41:30.007 に答える