2012-02-13 44 views
6

Tôi biết rằng JSLint chỉ là hướng dẫn và bạn nên lấy những gì nó nói với một hạt muối, tuy nhiên, tôi tò mò làm thế nào tôi thậm chí có thể giải quyết cảnh báo này mà không viết lại toàn bộ chức năng . Đây là chức năng quan tâm:JS Lint Array Ký hiệu chữ với chuỗi phân tách

function randomString(length) { 
    var chars = 'ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'.split(''), 
    str = '', 
    i; 

    if (!length) { 
     length = randomNumber(chars.length); 
    } 

    for (i = 0; i < length; i++) { 
     str += chars[randomNumber(chars.length)]; 
    } 
    return str; 
} 

JS Lint cho tôi biết "JS Lint: Sử dụng ký hiệu chữ cái []." và nó đang trỏ đến dòng với string.split(). Làm thế nào tôi có thể đáp ứng JSLint mà không cần phải viết lại toàn bộ hàm? Thậm chí có thể không?

Tôi biết rằng có các phương pháp khác để tạo chuỗi ngẫu nhiên; Tôi quan tâm đến cách giải quyết cảnh báo JSLint bằng cách sử dụng phương thức này.

+6

Bạn thậm chí không cần một mảng trong trường hợp đó, bạn có thể để nó như chuỗi và sử dụng 'chars.charAt (...) '. Có lẽ đó là đủ để đáp ứng JSLint. –

+0

Đó là một điểm tốt và cuối cùng tôi có thể thay đổi nó. Tuy nhiên, tôi vẫn muốn biết làm thế nào JSLint hy vọng tôi sử dụng ký pháp dạng mảng trong trường hợp cụ thể này. – arb

+0

Dunno, nhưng đây là nguồn;) https://github.com/douglascrockford/JSLint/blob/master/jslint.js#L3578 –

Trả lời

3

Bạn có thể gọi hàm split chuỗi nguyên mẫu với chuỗi như phạm vi để tránh những cảnh báo:

var chars = String.prototype.split.call('ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz', ''), 

Không biết tại sao JSLint than phiền khi chia nhỏ là một phương thức String.

Xem: https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/split

này cũng dường như đi qua mà không phàn nàn:

var alphabet = 'ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz', 
chars = alphabet.split(""); 
4

Đây là mảng của bạn trong nghĩa đen mảng ký hiệu:

[ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'T', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ] 

JSLint lẽ gợi ý nó, bởi vì cách mà Interpreter không nhất thiết phải chia String trong thời gian chạy, mà đúng hơn là đã có Array sẵn sàng để sử dụng .

Đơn giản chỉ cần tạo ra với điều này PHP-Code:

php > $chars = str_split('ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz'); 
php > echo "[ '".implode("', '", $chars)."' ]"; 
[ 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'T', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z' ] 
php > 
+4

Tại sao lại phức tạp với PHP? Chỉ cần nhập 'JSON.stringify ('ABC ... xyz'.split (' '))' vào trình điều khiển * javascript * của trình duyệt :-) – Bergi

+0

@Bergi Tôi tốt hơn với PHP so với JS, cảm ơn anyway :) – TimWolla

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