2012-07-27 76 views
1

我完全理解Javascript是區分大小寫的,但是如果語句Sam不等於sam。我創建了一個提示框來調用這個函數,並且我希望它將sam轉換爲Sam,或者當您在提示框中輸入名稱時使它們都爲True。如何獲取Javascript在if語句時不區分大小寫?

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> 
+0

爲什麼你有一個'狗'構造函數,但不使用它? – Bergi 2012-07-27 19:46:48

+0

我還在學習物體,所以我不確定。我只是認爲它是製造物體的一部分。 – 2012-07-27 19:54:28

+0

function printdog(dog){ console.log(dog.name +「」+ dog.owner); } – 2012-07-27 22:03:09

回答

1

您可以使用JavaScript .toUpperCase()方法對兩個參數:

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

或者,您也可以在兩個操作數使用.toLowerCase()方法:

if (contacts[i].name.toLowerCase() === name.toLowerCase()) 
+0

請[不要鏈接到schools.com](http://w3fools.com/) – Bergi 2012-07-27 19:58:55

+0

謝謝你,這很好。我不知道你能做到這一點,我認爲你只能使用一個聯繫人[我]。名字不是兩個。這在將來肯定會有用。 – 2012-07-27 19:58:58

+0

每次您都不應該在搜索參數中應用此函數 – Bergi 2012-07-27 20:00:57

4

你可以做的兩端像.toUpperCase()相等比較之前

1

只是lower-uppercase一切(包括搜索和數據)。你已經嘗試做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]); 
     } 
    } 
}