2009-12-11 13 views
7

Tôi đang cố gắng thêm giá trị của hai mảng trong ví dụ javascript. [1,2,1] + [3,2,3,4]Trong Javascript, cách tránh NaN khi thêm mảng

Câu trả lời phải là 4,4,4,4 nhưng tôi hoặc là nhận được 4,4,4 hoặc 4,4,4, NaN nếu tôi thay đổi độ dài mảng thứ nhất thành 4.

Tôi biết số thứ 4 cần nằm trong mảng thứ nhất, nhưng tôi không thể tìm ra cách cho javascript biết làm cho 0 thay vì không xác định nếu không có con số.

Trả lời

9

Sử dụng isNaN để đảm bảo giá trị không đánh giá để NaN trong phép tính số học.

này sẽ an toàn thêm hai con số như vậy nếu một trong số họ không phải là một con số, nó sẽ được thay thế bằng 0.

var c = (isNaN(a) ? 0 : a) + (isNaN(b) ? 0 : b); 

Nếu bạn nghi ngờ rằng một trong hai a hoặc b có thể là một chuỗi thay vì số ("2" thay vì 2), bạn phải chuyển đổi nó thành số trước khi thêm. Bạn có thể sử dụng Unary + để làm điều đó.

var c = (isNaN(a) ? 0 : +a) + (isNaN(b) ? 0 : +b); 
+0

Woot, cộng unary chuyển thành số, tuyệt vời! – akuhn

1
var a = [ 1, 2, 3, 4, 5 ]; 
var b = [ 2 , 3]; 
var c = []; 
var maxi = Math.max(a.length, b.length); 
for (var i = 0; i < maxi; i++) { 
    c.push((a[i] || 0) + (b[i] || 0)); 
} 
0
[1,2,3] + [3,2,1] 

Trong ví dụ trên, JavaScript chuyển đổi các mảng các chuỗi anyway vì vậy kết quả là:

1,2,33,2,1