2011-01-03 47 views
5

Tôi có một yêu cầu ajax mà trả về một danh sách các giá trị như thế này:Cách thanh lịch để chuyển đổi chuỗi giá trị thành một mảng Javascript?

"1,2,3,4,5,6" 

tôi cần nó là một mảng javascript với những con số:

[1,2,3,4,5,6] 

tôi đã cố gắng:

var array = new Array("1,2,3,4,5,6".split(",")) 

Nhưng các số vẫn là chuỗi ở đầu ra:

["1","2","3","4","5","6"] 

Có cách nào sạch sẽ để có nó dưới dạng mảng được đánh số không? Tốt hơn là không viết một hàm để lặp qua nó?

Trả lời

13

Bạn cần để lặp qua và chuyển đổi chúng sang số, như thế này:

var array = "1,2,3,4,5,6".split(","); 
for(var i=0; i<array.length; i++) array[i] = +array[i]; 

Hoặc, ví dụ truyền thống hơn:

var array = "1,2,3,4,5,6".split(","); 
for(var i=0; i<array.length; i++) array[i] = parseInt(array[i], 10); 
+2

chỉ dành riêng cho phong cách, một ngắn một: 'for (var i = array.length; i; mảng [- -i] = + mảng [i]); ' – Mic

0

Nếu bạn tin tưởng vào phản ứng ajax, và nếu (vì bất kỳ lý do nào) bạn cam kết không sử dụng vòng lặp, bạn luôn có thể đi với eval:

var str = "1,2,3,4,5,6"; 
var array = eval("[" + str + "]"); 
+0

eval có một số vấn đề của riêng nó (ví dụ: nó là cách chậm hơn so với một vòng lặp), tôi sẽ không khuyên bạn nên nó nếu bất kỳ tùy chọn khác có sẵn. – albertov

+1

Hoặc nếu bạn không tin tưởng phản hồi ajax, chỉ cần thực hiện 'var array = JSON.parse ('[' + str + ']');' – Thomas

2

Một cách tiếp cận jQuery trung tâm hơn khi sử dụng jQuery.map():

var str = "1,2,3,4,5,6"; 
var arr = $.map(str.split(","), function(el) { return parseInt(el, 10); }); 
1

Không chắc nếu điều này được tính như viết một chức năng nhưng bạn có thể sử dụng chức năng bản đồ trong jquery. Tôi thấy bạn liệt kê như là một thẻ vì vậy tôi giả sử bạn đang sử dụng:

var stringArray = "1,2,3,4,5,6".split(","); 
var numberArray = $.map(stringArray, 
    function(item, i) 
    { 
     return parseInt(item, 10); 
    }); 
0

Nếu bạn không muốn expliclty lặp bạn có thể sử dụng array.map, chức năng bản đồ Javascripts.

array.map(callbackFunc, array); 

var arr = array.map(function(x) {return parseInt(x);}, "1,2,3,4,5,6".split(",")); 

http://www.tutorialspoint.com/javascript/array_map.htm

Theres có thể là một tài liệu tham khảo tốt hơn ở nơi nhưng tôi không chúng ta javascript đủ để có một trang web tài liệu tham khảo yêu thích tốt.

EDIT - tôi thấy jQuery có bản đồ riêng của nó, đó có thể đáng xem xét.

1

// jquery phải có một cách để làm những gì bất kỳ trình duyệt hiện đại có thể làm:

var str= "1,2,3,4,5,6"; 
var arr= str.split(',').map(Number); 

// returns an array of numbers 
Các vấn đề liên quan