Thông qua thư viện javascript của tôi, tôi kết thúc bằng một chuỗi đại diện cho một số. Bây giờ tôi muốn tạo thành một bổ sung trên số đó mà không có nó làm một chuỗi nối thay thế. Giải pháp này rất dễ dàng ( How do I add an integer value with javascript (jquery) to a value that's returning a string?, How to make an addition instead of a concatenation) nếu số của bạn luôn bằng số nguyên. Tuy nhiên chuỗi của tôi có thể là một phao hoặc một số nguyên, và tại thời điểm bổ sung, và tôi không biết nó sẽ là gì. Có cách nào để đảm bảo việc bổ sung xảy ra bất kể đó là một phao hay số nguyên?Cách đảm bảo thêm javascript thay vì nối chuỗi (Không phải lúc nào cũng thêm số nguyên)
Trả lời
Thử sử dụng parseFloat
. Các biến đầu vào sẽ được chuyển thành float, sẽ hoạt động cho dù chuỗi có chứa một số nguyên hay một float. Kết quả của bạn sẽ luôn là một phao.
An toàn là hợp lý để luôn sử dụng parseFloat
ngay cả khi bạn được cung cấp một số nguyên. Nếu bạn phải sử dụng chuyển đổi thích hợp, bạn có thể match
cho dấu thập phân và sử dụng hàm thích hợp.
trừ khi nó 'NaN' – jcolebrand
Tôi kết hợp suy nghĩ của bạn thành một phiên bản dài hơn của câu trả lời của tôi, phù hợp với những gì bạn nghĩ? – jcolebrand
Yup, một cái gì đó như thế là những gì tôi có nghĩa là :) –
Tôi sẽ giả định rằng bổ sung float là đủ, và nếu không, thì bạn sẽ cần phải đào sâu hơn.
function alwaysAddAsNumbers(numberOne, numberTwo){
var parseOne = parseFloat(numberOne),
parseTwo = parseFloat(numberTwo);
if (isNaN(parseOne)) parseOne = 0;
if (isNaN(parseTwo)) parseTwo = 0;
return parseOne + parseTwo;
}
Chịu gì @Asad nói, bạn có thể muốn làm điều này thay vì:
function alwaysAddAsNumbers(a, b){
var m = 0,
n = 0,
d = /\./,
f = parseFloat,
i = parseInt,
t = isNaN,
r = 10;
m = (d.test(a)) ? f(a) : i(a,r);
n = (d.test(b)) ? f(b) : i(b,r);
if (t(m)) m = 0;
if (t(n)) n = 0;
return m + n;
}
này sẽ luôn luôn cung cấp cho bạn ít nhất một đầu ra không, và không cho bạn biết nếu một trong hai là NaN
.
Chắc chắn tốt hơn để trả lại NaN nếu một trong hai là NaN? –
Thông tin cần biết, nhưng tôi không quan tâm đến NaN. – dnc253
idk, spec là gì? ;-) ... Bạn nên quan tâm với NaN cos nó sẽ cắn bạn trong cơ hội đầu tiên ass nó được. – jcolebrand
Vì một số lý do .... ai biết ???
Sử dụng parseFloat hoạt động .... khi parseInt không ... rõ ràng chúng không phải lúc nào cũng giống nhau.
FWIW .... Tôi đang "thêm" yếu tố dữ liệu từ "kiểm tra" hộp kiểm ở đây ...
var AddOns = 0;
$('.broadcast-channels').each(function(){
if ($(this).prop("checked")) {
var thisAddOn = parseFloat($(this).data('channel'));
AddOns = AddOns + thisAddOn;
}
});
- 1. Sass được ghép nối thay vì thêm?
- 2. Javascript/jQuery: Tách chuỗi camelcase và thêm dấu gạch nối thay vì không gian
- 3. Ajax thay thế thay vì nối thêm
- 4. javascript innerHTML thêm thay vì thay thế
- 5. UIWebView không phải lúc nào cũng gọi - [NSURLCache storeCachedResponse: forRequest:]
- 6. FLAG_TURN_SCREEN_ON không phải lúc nào cũng hoạt động
- 7. Bạn có thể có thêm $ prepend mongo thay vì nối thêm không?
- 8. UITableViewCell không phải lúc nào cũng có thể chọn?
- 9. Có vẻ như không thêm hai số nguyên vào javascript?
- 10. Đảm bảo không đảm bảo VirtualMachineError
- 11. setNeedsDisplay không phải lúc nào cũng gọi drawRect
- 12. Thêm số nguyên vào NSMutableArray
- 13. OnFocusChange không phải lúc nào cũng hoạt động
- 14. Bash eval replace $() không phải lúc nào cũng tương đương?
- 15. Cách hay để "nối thêm" các số nguyên trong C#?
- 16. Ghi đè dòng F ++ thay vì nối thêm
- 17. jQuery thêm chuỗi và không ghép nối
- 18. NavigationBar setShadowImage không phải lúc nào cũng hoạt động
- 19. MKMapView regionDidChangeAnimated không phải lúc nào cũng được gọi!
- 20. chỉ số python, Json và chuỗi phải là số nguyên, không phải là số nguyên
- 21. innerHTML thêm thay vì thay thế
- 22. Thêm số nguyên làm chuỗi vào biến bash
- 23. Thêm số nguyên thành các chuỗi trong C#
- 24. JavaScript - Làm cách nào để đảm bảo jQuery được tải?
- 25. Làm cách nào để thêm javascript động vào thẻ đầu từ chuỗi chứ không phải tệp?
- 26. xóa thêm dấu cách trong chuỗi javascript
- 27. Làm cách nào để đảm bảo chuỗi Bash là chữ và số, không có dấu gạch dưới?
- 28. iOS: Ảnh tải lên Facebook không phải lúc nào cũng tải lên
- 29. boolean thêm (như số nguyên)
- 30. Nơi để thêm nguyên mẫu Chuỗi
trừ khi đó là 'NaN' – jcolebrand
Không khác nhau từ 'parseInt' .... –
Vì vậy, , Tôi đã lo lắng rằng nếu tôi sử dụng 'parseFloat()' tôi sẽ kết thúc với "5.0" thay vì "5", nhưng rõ ràng đó không phải là trường hợp? – dnc253