Hướng dẫn convert empty string to 0 javascript - chuyển đổi chuỗi trống thành 0 javascript

Tiếp theo & nbsp; »

159/1956

«& Nbsp; trước

Sự mô tả

Mã sau đây cho thấy cách chuyển đổi chuỗi trống ("") thành 0.

Thí dụ


<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
var num = Number("")
document.writeln(num);
<!-- w w  w .ja  v  a  2 s. c o  m-->


<body>


Bấm để xem bản demo

Mã trên tạo ra kết quả sau.

Hướng dẫn convert empty string to 0 javascript - chuyển đổi chuỗi trống thành 0 javascript

Tiếp theo & nbsp; »

«& Nbsp; trước

Thay vì kludging nó để bạn có thể tiếp tục, tại sao không sao lưu và tự hỏi tại sao bạn lại chạy vào NAN ngay từ đầu?

Nếu bất kỳ đầu vào số nào cho hoạt động là NAN, đầu ra cũng sẽ là NAN. Đó là cách mà tiêu chuẩn điểm nổi hiện tại của IEEE hoạt động (nó không chỉ là JavaScript). Hành vi đó là vì một lý do chính đáng: ý định cơ bản là để bạn không sử dụng kết quả không có thật mà không nhận ra đó là không có thật.

Cách thức hoạt động của NAN là nếu có điều gì đó không ổn trong một số hoạt động phụ trợ phụ (tạo ra NAN ở cấp độ thấp hơn), kết quả cuối cùng cũng sẽ là NAN, bạn sẽ nhận ra ngay lập tức là một lỗi ngay cả khi Logic xử lý lỗi (ném/bắt có thể?) Vẫn chưa hoàn thành.

Nan là kết quả của một phép tính số học luôn cho thấy một cái gì đó đã trở nên tồi tệ trong các chi tiết của số học. Đó là một cách để máy tính nói "gỡ lỗi cần thiết ở đây". Thay vì tìm cách nào đó để tiếp tục với một số số mà hầu như không đúng (là 0 thực sự là những gì bạn muốn?), Tại sao không tìm thấy vấn đề và khắc phục nó.

Một vấn đề phổ biến trong JavaScript là cả parseInt(...)parseFloat(...) sẽ trả lại NAN nếu đưa ra một đối số vô nghĩa (null, '', v.v.). Khắc phục sự cố ở cấp độ thấp nhất có thể thay vì ở cấp độ cao hơn. Sau đó, kết quả của tính toán tổng thể có cơ hội tốt để có ý nghĩa và bạn không thay thế một số số ma thuật (0 hoặc 1 hoặc bất cứ điều gì) cho kết quả của toàn bộ tính toán. (Thủ thuật của (parseInt (foo.value) |

Có lẽ để dễ dàng mã hóa, bạn muốn có một hàm để lấy giá trị từ người dùng, làm sạch nó và cung cấp giá trị mặc định nếu cần thiết, như thế này:

function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}

Đây là một bài đăng nhanh để hiển thị các ví dụ về 7 cách khác nhau để chuyển đổi một chuỗi thành một số trong JavaScript cùng với đầu ra mà mỗi người đưa ra cho các giá trị khác nhau.

Con số()

Hàm Number() chấp nhận tham số chuỗi và chuyển đổi nó thành số số nguyên hoặc dấu phẩy động hoặc trả về NaN (không phải là số) nếu giá trị đầu vào không đại diện cho một số. Một điều thú vị cần lưu ý là số 0 (0) được trả về cho một chuỗi trống (____10).

Cách để kiểm tra xem giá trị có bằng NaN là sử dụng hàm

function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}
2 không.

ParseInt ()

Hàm

function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}
3 chấp nhận tham số chuỗi và chuyển đổi nó thành số nguyên hoặc trả về NaN (không phải là số) nếu giá trị đầu vào không đại diện cho một số. Nếu chuỗi đầu vào bắt đầu bằng một số (ví dụ:
function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}
5) thì
function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}
3 sẽ trả về số từ đầu chuỗi (ví dụ:
function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}
7). Nếu đầu vào là một chuỗi trống (
function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}
0) thì NaN (không phải là số) được trả về.

parsefloat ()

Hàm

// Number
set('number1', Number('123'));
set('number2', Number('12.5'));
set('number3', Number('123abc'));
set('number4', Number('abc'));
set('number5', Number(''));

// parseInt
set('parseInt1', parseInt('123'));
set('parseInt2', parseInt('12.5'));
set('parseInt3', parseInt('123abc'));
set('parseInt4', parseInt('abc'));
set('parseInt5', parseInt(''));

// parseFloat
set('parseFloat1', parseFloat('123'));
set('parseFloat2', parseFloat('12.5'));
set('parseFloat3', parseFloat('123abc'));
set('parseFloat4', parseFloat('abc'));
set('parseFloat5', parseFloat(''));

// unary plus operator (+)
set('unaryPlus1', +'123');
set('unaryPlus2', +'12.5');
set('unaryPlus3', +'123abc');
set('unaryPlus4', +'abc');
set('unaryPlus5', +'');

// multiply by 1 (* 1)
set('multiply1', '123' * 1);
set('multiply2', '12.5' * 1);
set('multiply3', '123abc' * 1);
set('multiply4', 'abc' * 1);
set('multiply5', '' * 1);

// Math.round
set('mathRound1', Math.round('123'));
set('mathRound2', Math.round('12.5'));
set('mathRound3', Math.round('123abc'));
set('mathRound4', Math.round('abc'));
set('mathRound5', Math.round(''));

// Math.floor
set('mathFloor1', Math.floor('123'));
set('mathFloor2', Math.floor('12.5'));
set('mathFloor3', Math.floor('123abc'));
set('mathFloor4', Math.floor('abc'));
set('mathFloor5', Math.floor(''));

function set(id, value) {
    document.getElementById(id).innerHTML = value;
}
0 chấp nhận tham số chuỗi và chuyển đổi nó thành số điểm nổi (với một điểm thập phân nếu được yêu cầu) hoặc trả về NaN (không phải số) nếu giá trị đầu vào không đại diện cho một số. Nếu chuỗi đầu vào bắt đầu bằng một số (ví dụ:
function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}
5) thì
function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}
3 sẽ trả về số từ đầu chuỗi (ví dụ:
function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}
7). Nếu đầu vào là một chuỗi trống (
function getFoobarFromUser(elementid) {
        var foobar = parseFloat(document.getElementById(elementid).innerHTML)
        if (isNaN(foobar)) foobar = 3.21;       // default value
        return(foobar.toFixed(2));
}
0) thì NaN (không phải là số) được trả về.

Nhà điều hành Unary Plus (+)

Toán tử Unary Plus (

// Number
set('number1', Number('123'));
set('number2', Number('12.5'));
set('number3', Number('123abc'));
set('number4', Number('abc'));
set('number5', Number(''));

// parseInt
set('parseInt1', parseInt('123'));
set('parseInt2', parseInt('12.5'));
set('parseInt3', parseInt('123abc'));
set('parseInt4', parseInt('abc'));
set('parseInt5', parseInt(''));

// parseFloat
set('parseFloat1', parseFloat('123'));
set('parseFloat2', parseFloat('12.5'));
set('parseFloat3', parseFloat('123abc'));
set('parseFloat4', parseFloat('abc'));
set('parseFloat5', parseFloat(''));

// unary plus operator (+)
set('unaryPlus1', +'123');
set('unaryPlus2', +'12.5');
set('unaryPlus3', +'123abc');
set('unaryPlus4', +'abc');
set('unaryPlus5', +'');

// multiply by 1 (* 1)
set('multiply1', '123' * 1);
set('multiply2', '12.5' * 1);
set('multiply3', '123abc' * 1);
set('multiply4', 'abc' * 1);
set('multiply5', '' * 1);

// Math.round
set('mathRound1', Math.round('123'));
set('mathRound2', Math.round('12.5'));
set('mathRound3', Math.round('123abc'));
set('mathRound4', Math.round('abc'));
set('mathRound5', Math.round(''));

// Math.floor
set('mathFloor1', Math.floor('123'));
set('mathFloor2', Math.floor('12.5'));
set('mathFloor3', Math.floor('123abc'));
set('mathFloor4', Math.floor('abc'));
set('mathFloor5', Math.floor(''));

function set(id, value) {
    document.getElementById(id).innerHTML = value;
}
7) được đặt trước khi chuỗi chuyển đổi nó thành số số nguyên hoặc dấu phẩy động hoặc trả về NaN (không phải số) nếu giá trị đầu vào không đại diện cho một số. Giống như hàm Number(), nó trả về 0 (0) cho một chuỗi trống (parseInt(...)1).

Nhân với 1 (* 1)

Nhân một chuỗi với 1 (parseInt(...)2) hoạt động giống như toán tử Unary Plus ở trên, nó chuyển đổi chuỗi thành số số nguyên hoặc dấu phẩy động hoặc trả về NaN (không phải số) nếu giá trị đầu vào không đại diện cho số. Giống như hàm Number(), nó trả về 0 (0) cho một chuỗi trống (parseInt(...)6).

Math.round ()

Phương thức parseInt(...)7 chấp nhận tham số chuỗi và chuyển đổi nó thành một số nguyên được làm tròn thành số toàn bộ gần nhất, ví dụ parseInt(...)8 được chuyển đổi thành parseInt(...)9 và parseFloat(...)0 được chuyển đổi thành parseFloat(...)1. Nó trả về NaN (không phải là một số) nếu giá trị đầu vào không đại diện cho một số và như Number(), nó trả về 0 (0) cho một chuỗi trống (parseFloat(...)5).

Math.Floor ()

Phương thức parseFloat(...)6 chấp nhận tham số chuỗi và chuyển đổi nó thành một số nguyên được làm tròn xuống tổng số thấp nhất, ví dụ parseFloat(...)7 được chuyển đổi thành parseInt(...)9. Nó trả về NaN (không phải là một số) nếu giá trị đầu vào không đại diện cho một số và như Number(), nó trả về 0 (0) cho một chuỗi trống (null2).

Ở đây họ đang hoạt động: (Chỉnh sửa trên Stackblitz tại https://stackblitz.com/edit/vanilla-js-ways-to-convert-a-string-to-a-number)(Edit on StackBlitz at https://stackblitz.com/edit/vanilla-js-ways-to-convert-a-string-to-a-number)

JavaScript chuyển đổi chuỗi thành mã số

Đây là mã JavaScript chạy trong ví dụ trên.

// Number
set('number1', Number('123'));
set('number2', Number('12.5'));
set('number3', Number('123abc'));
set('number4', Number('abc'));
set('number5', Number(''));

// parseInt
set('parseInt1', parseInt('123'));
set('parseInt2', parseInt('12.5'));
set('parseInt3', parseInt('123abc'));
set('parseInt4', parseInt('abc'));
set('parseInt5', parseInt(''));

// parseFloat
set('parseFloat1', parseFloat('123'));
set('parseFloat2', parseFloat('12.5'));
set('parseFloat3', parseFloat('123abc'));
set('parseFloat4', parseFloat('abc'));
set('parseFloat5', parseFloat(''));

// unary plus operator (+)
set('unaryPlus1', +'123');
set('unaryPlus2', +'12.5');
set('unaryPlus3', +'123abc');
set('unaryPlus4', +'abc');
set('unaryPlus5', +'');

// multiply by 1 (* 1)
set('multiply1', '123' * 1);
set('multiply2', '12.5' * 1);
set('multiply3', '123abc' * 1);
set('multiply4', 'abc' * 1);
set('multiply5', '' * 1);

// Math.round
set('mathRound1', Math.round('123'));
set('mathRound2', Math.round('12.5'));
set('mathRound3', Math.round('123abc'));
set('mathRound4', Math.round('abc'));
set('mathRound5', Math.round(''));

// Math.floor
set('mathFloor1', Math.floor('123'));
set('mathFloor2', Math.floor('12.5'));
set('mathFloor3', Math.floor('123abc'));
set('mathFloor4', Math.floor('abc'));
set('mathFloor5', Math.floor(''));

function set(id, value) {
    document.getElementById(id).innerHTML = value;
}

Đăng ký kênh YouTube của tôi hoặc theo dõi tôi trên Twitter, Facebook hoặc GitHub để được thông báo khi tôi đăng nội dung mới.

Tôi hiện đang cố gắng đi du lịch khắp nước Úc bằng xe máy với vợ tôi Tina trên một cặp Hoàng gia Enfield Himalayans. Bạn có thể theo dõi cuộc phiêu lưu của chúng tôi trên YouTube, Instagram và Facebook.

Chuỗi trống 0 có phải là JavaScript không?

Sử dụng thuộc tính độ dài để kiểm tra xem một chuỗi có trống không, ví dụ: if (str. length === 0) {}. Nếu độ dài của chuỗi bằng 0, thì nó trống, nếu không nó không trống.

Làm cách nào để trả lại 0 thay vì Nan?

Sử dụng toán tử logic hoặc (||) để chuyển đổi NAN thành 0, ví dụ:Const result = val ||0;.Toán tử logic hoặc (||) trả về giá trị bên phải nếu giá trị bên trái là giả.Đã sao chép!Toán tử logic hoặc (||) trả về giá trị bên phải nếu giá trị bên trái là giả. , e.g. const result = val || 0; . The logical OR (||) operator returns the value to the right if the value to the left is falsy. Copied! The logical OR (||) operator returns the value to the right if the value to the left is falsy.

Tại sao null> = 0 true?

So sánh chuyển đổi null thành một số, coi nó là 0.Đó là lý do tại sao (3) null> = 0 là đúng và (1) null> 0 là sai.Mặt khác, kiểm tra bình đẳng == cho không xác định và null được xác định sao cho không có bất kỳ chuyển đổi nào, chúng bằng nhau và không bằng bất cứ thứ gì khác. . That's why (3) null >= 0 is true and (1) null > 0 is false. On the other hand, the equality check == for undefined and null is defined such that, without any conversions, they equal each other and don't equal anything else.

Làm cách nào để hạn chế Nan trong JavaScript?

Sử dụng phương thức isnan (): Phương thức isnan () được sử dụng để kiểm tra số đã cho là nan hay không.Nếu isnan () trả về true cho số số thì thì nó gán giá trị 0. sử dụng ||Nhà điều hành: Nếu số Number Number là bất kỳ giá trị giả nào, nó sẽ được gán cho 0.