2012-07-27 81 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]); 
     } 
    } 
}