2011-11-09 12 views
5

Tôi có một chức năng tìm kiếm thông qua một chuỗi các chuỗi. Nó hoạt động hoàn hảo, ngoại trừ thực tế là trường hợp của nó nhạy cảm. Tôi cần nó không phân biệt chữ hoa chữ thường.Khó chuyển đổi một mảng chuỗi thànhLowerCase và thêm vào hàm của tôi. Javascript

Cách dễ nhất là làm cho hàm chuyển đổi mảng thành chữ thường, vì vậy khi hàm thực hiện tìm kiếm qua mảng, nó có thể tìm thấy nó, bất kể trường hợp của nó.

Tôi đã thử thêm var array_name_tolowercase = array_name.toLowerCase(); trong hàm của mình để khi hàm được gọi, hàm có thể hoạt động trên tất cả các mảng; Nếu cần thiết.

Xin lỗi tôi đã không làm cho bản thân mình rõ ràng cả, nếu đây là trường hợp, vui lòng cho tôi biết và tôi sẽ cố gắng hết sức để giải thích lại. Cảm ơn trước!

+0

Hiển thị mã cho chức năng của bạn để chúng tôi có thể tư vấn cách làm cho nó không phân biệt chữ hoa chữ thường. – jfriend00

+0

Xin cảm ơn các bạn, đã sắp xếp nó! Cảm ơn! –

Trả lời

4

Bạn sẽ cần phải chuyển đổi các yếu tố của mảng để giảm trường hợp, không phải là đối tượng Array chính nó. Tôi không biết chính xác những gì xảy ra bên trong chức năng của bạn, nhưng một cái gì đó như thế này:

for(var i = 0; i < arrayName.length; i++) { 
    if(arrayName[i].toLowerCase() === "whatever") { 
     //Found a match! 
    } 
} 

Đăng một số mã của bạn và sẽ dễ dàng hơn để cung cấp giải pháp chính xác hơn! Đây là một số example ở trên.

+0

Xin chào, xin lỗi vì đã quá mơ hồ. Tôi đã đăng một số mã ở trên. Cảm ơn bạn –

+0

Mã của bạn dường như hoạt động với tôi: http://jsfiddle.net/interdream/BCqsb/1/ –

+0

Tôi đã cố gắng tìm ra nó. Cảm ơn –

2

bạn không thể gọi toLowerCase trên đối tượng mảng bạn cần phải kêu gọi thành viên riêng lẻ của mảng

6

Bạn không thể sử dụng toLowerCase() trên một mảng, trừ khi bạn mở rộng nó.

Đặt một nơi nào đó trong mã của bạn, sau đó từ giờ trở đi, bạn có thể sử dụng nó trên mảng (lưu ý, chỉ khi mảng của bạn được làm đầy với dây)

Array.prototype.toLowerCase = function() { 
    for (var i = 0; i < this.length; i++) { 
     this[i] = this[i].toString().toLowerCase(); 
    } 
} 
3

Mảng không có một phương pháp toLowerCase. Bạn có thể tạo một hoặc chỉ gọi toLowerCase trên mỗi chuỗi khi lặp qua mảng.

Array.prototype.toLowerCase = function() { 
    var i = this.length; 
    while (--i >= 0) { 
     if (typeof this[i] === "string") { 
      this[i] = this[i].toLowerCase(); 
     } 
    } 
    return this; 
}; 

Đối với mã bạn đăng, bạn có thể thay đổi var a = (array[i].indexOf(searchlow)); để

var a = (array[i].toLowerCase().indexOf(searchlow)); 
20

Cách dễ nhất là để JOIN mảng hỗn hợp vào một chuỗi, chữ thường nó, sau đó chia chuỗi lại thành một mảng .

Ví dụ:

var tmp = mcArray.join('~').toLowerCase() 
var lcArray = tmp.split('~') 
+0

Điều gì sẽ xảy ra nếu bất kỳ mục mảng nào chứa '~'? – Greg

+1

Khá ngớ ngẩn ... rõ ràng điều đó sẽ làm rối tung logic. Đây là giả định "~" là một ký tự an toàn.Bạn có thể sử dụng bất kỳ nhân vật nào khác. – LukeS

2

Cá nhân, tôi tìm thấy nó dễ dàng hơn để làm điều đó theo cách này:

   array = ["Apples","Oranges","FRUIT"]; 
       console.log("array: "+array); //array: Apples,Oranges,FRUIT 
       arrayString = array.toString(); 
       arrayLowerString = arrayString.toLowerCase(); 
       arrayLower = arrayLowerString.split(","); 
       console.log("arrayLower: "+arrayLower); //apples,oranges,fruit 
+0

Công trình này, hoặc có thể bạn chỉ cần ghép nối cả ba phương thức thành một? 'var arrayLowerString = array.toString(). ToLowerCase(). Split (',')' –

0
function(resp) { 
    return this.colors.filter(function(color) { 
     return color.toLowerCase() === resp.toLowerCase(); 
    })[0]; 
} 
0

array_name_tolowercase = array_name.map (x => x.toLowerCase)

Các vấn đề liên quan