2013-05-06 78 views
25

Tôi có một mảng số nguyên trong JavaScript mà tôi muốn thêm dữ liệu từ chuỗi được phân cách bằng dấu phẩy, Có cách đơn giản để làm điều này không?Làm thế nào để chuyển đổi chuỗi phân tách bằng dấu phẩy thành mảng số trong javascript

ví dụ: var strVale = "130,235,342,124 ";

+0

http://stackoverflow.com/questions/2858121/convert-javascript-comma-separated-string-into-an- mảng – undefined

Trả lời

25

Bạn có thể sử dụng split() để có được mảng chuỗi từ dấu phẩy tách chuỗi. Nếu bạn lặp lại và thực hiện phép toán trên phần tử của mảng chuỗi thì phần tử đó sẽ được coi là số theo phép diễn thời gian nhưng bạn vẫn có mảng chuỗi. Để chuyển đổi mảng chuỗi phân tách bằng dấu phẩy, hãy xem chỉnh sửa.

arr = strVale.split(','); 

Live Demo

var strVale = "130,235,342,124"; 
arr = strVale.split(','); 
for(i=0; i < arr.length; i++) 
    console.log(arr[i] + " * 2 = " + (arr[i])*2); 

Output

130 * 2 = 260 
235 * 2 = 470 
342 * 2 = 684 
124 * 2 = 248 

Chỉnh sửa, Comma tách chuỗi để int Mảng Trong ví dụ trên chuỗi được đúc đến các số trong biểu nhưng để có được mảng int từ mảng chuỗi bạn cần chuyển đổi nó thành số.

var strVale = "130,235,342,124"; 
var strArr = strVale.split(','); 
var intArr = []; 
for(i=0; i < strArr.length; i++) 
    intArr.push(parseInt(strArr[i])); 
+2

điều này là sai/chỉ một bước để giải pháp thực tế. Nó sẽ lưu các số dưới dạng chuỗi vào mảng, không phải là số nguyên! – ProblemsOfSumit

+0

điều này không covert giá trị INT như OP yêu cầu – Serge

+0

Tôi đã cập nhật câu trả lời của tôi, cả hai đều đúng. Mặc dù ví dụ cho thấy phần tử mảng chuỗi được chuyển đổi thành số do biểu thức nhưng mảng là chuỗi không phải là số. – Adil

2

Phương thức split() được sử dụng để chia chuỗi thành mảng mảng và trả về mảng mới.

Syntax: 
    string.split(separator,limit) 


arr = strVale.split(','); 

SEE HERE

2

Bạn có thể chia và chuyển đổi như

var strVale = "130,235,342,124 "; 
var intValArray=strVale.split(','); 
for(var i=0;i<intValArray.length;i++{ 
    intValArray[i]=parseInt(intValArray[i]); 
} 

Bây giờ bạn có thể sử dụng intValArray trong bạn logic.

14

Bạn có thể sử dụng số String split method để nhận các số đơn lẻ dưới dạng một chuỗi các chuỗi. Sau đó convert them to numbers với toán tử cộng unary, các Number chức năng hoặc parseInt, và thêm chúng vào mảng của bạn:

var arr = [1,2,3], 
    strVale = "130,235,342,124 "; 
var strings = strVale.split(","); 
for (var i=0; i<strVale.length; i++) 
    arr.push(+ strings[i]); 

Hoặc, trong một bước, sử dụng Array map để chuyển đổi chúng và applying họ một đơn push:

arr.push.apply(arr, strVale.split(",").map(Number)); 
+0

Sử dụng tuyệt vời bản đồ() ' –

10

chỉ cần bạn sử dụng một vài phương pháp cho việc này, đúng vậy!

var strVale = "130,235,342,124"; 
var resultArray = strVale.split(',').map(function(strVale){return Number(strVale);}); 

đầu ra sẽ là mảng số.

+0

không tệ, nhưng hãy xem câu trả lời của tôi cho một cách tiết kiệm hơn để làm điều đó;) – Serge

11
? "123,87,65".split(",").map(Number) 
> [123, 87, 65] 

Sửa >>

Nhờ @NickN lưu ý! Sử dụng phương pháp này, một bộ lọc được áp dụng nếu bạn bằng ví dụ.muốn loại trừ bất kỳ giá trị không phải số:

? "123,87,hello,65".split(",").map(Number).filter(x => !isNaN(x)) 
> [123, 87, 65] 
+1

Điều này thật khéo léo! Câu trả lời tốt nhất cho đến nay. – Kagawa

+1

Câu trả lời rất hay. Nếu bạn muốn loại trừ mọi giá trị không phải số, bạn có thể tack vào bộ lọc cho NaN's: '" 123,87, hello, 65 ".split (", "). Bản đồ (Số) .filter (x => ! isNaN (x)) 'cho ' [123, 87, 65] '. – NickN

0

Giải pháp:

var answerInt = []; 
var answerString = "1,2,3,4"; 
answerString.split(',').forEach(function (item) { 
    answerInt.push(parseInt(item)) 
}); 
+0

Đó không phải là một chuỗi. – delroh

+0

@delroh Yep đã thay đổi, Cảm ơn bạn! –

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