Làm cách nào để chuyển đổi một chuỗi thành một số nguyên trong JavaScript?


Câu trả lời:


2154

Cách đơn giản nhất là sử dụng Numberhàm riêng:

var x = Number("1000")

Nếu điều đó không phù hợp với bạn, thì có các phương thức parseInt , unary plus , parseFloat with floorMath.round .

phân tích:

var x = parseInt("1000", 10); // you want to use radix 10
    // so you get a decimal number even with a leading 0 and an old browser ([IE8, Firefox 20, Chrome 22 and older][1])

unary plus nếu chuỗi của bạn đã ở dạng số nguyên:

var x = +"1000";

nếu chuỗi của bạn là hoặc có thể là số float và bạn muốn một số nguyên:

var x = Math.floor("1000.01"); //floor automatically converts string to number

hoặc, nếu bạn sẽ sử dụng Math.floor nhiều lần:

var floor = Math.floor;
var x = floor("1000.01");

Nếu bạn là người quên đặt cơ số khi bạn gọi parseInt, bạn có thể sử dụng parseFloat và làm tròn nó theo cách bạn muốn. Ở đây tôi dùng sàn.

var floor = Math.floor;
var x = floor(parseFloat("1000.01"));

Thật thú vị, Math.round (như Math.floor) sẽ thực hiện chuyển đổi chuỗi thành số, vì vậy nếu bạn muốn số được làm tròn (hoặc nếu bạn có số nguyên trong chuỗi), đây là một cách tuyệt vời, có thể là yêu thích của tôi:

var round = Math.round;
var x = round("1000"); //equivalent to round("1000",0)

1
jsperf.com/performance-of-parseint/29 , hy @jedierikb tôi đã chỉnh sửa liên kết jsperf. Thêm '4'>>0'4'>>>0.
emaniacs

6
Cập nhật đến 2015: kể từ ECMAScript 5, các chuỗi có số 0 "0" hàng đầu cũng nhận được cơ số 10 mặc định, thay vì 8. Chỉ định rõ ràng cơ số 10 chỉ cần thiết cho các trình duyệt cũ hơn. kangax.github.io/compat-table/es5/ Kẻ
Grilse

20
Lưu ý rằng Số ('') thành công (trả về 0), mặc dù hầu hết mọi người sẽ không coi chuỗi trống là đại diện cho một số hợp lệ. Và parseInt ('3q') thành công (trả lại 3) mặc dù hầu hết mọi người sẽ không coi '3q' là một số hợp lệ.
Dave Pacheco

3
Đứng lên. Cả hai parseIntparseFloatvui vẻ nhận thư. Chỉ Numbertrả lại NaNmột cách nhất quán.
Karl Pokus

2
Theo tôi, phân tích một số nguyên sẽ dẫn đến ngoại lệ / NaNcho mọi giá trị không chính xác là một số nguyên. Do đó, không ai trong số này làm việc Number('2.2')cưỡng chế 2Number('')ép buộc về 0.
Michał Knapik

225

Hãy thử chức năng parseInt:

var number = parseInt("10");

Nhưng có một vấn đề. Nếu bạn cố gắng chuyển đổi "010" bằng hàm parseInt, nó sẽ phát hiện dưới dạng số bát phân và sẽ trả về số 8. Vì vậy, bạn cần chỉ định một cơ số (từ 2 đến 36). Trong trường hợp này cơ sở 10.

parseInt(string, radix)

Thí dụ:

var result = parseInt("010", 10) == 10; // Returns true

var result = parseInt("010") == 10; // Returns false

Lưu ý rằng parseIntbỏ qua dữ liệu xấu sau khi phân tích cú pháp bất cứ điều gì hợp lệ.
Hướng dẫn này sẽ phân tích thành 51:

var result = parseInt('51e3daf6-b521-446a-9f5b-a1bb4d8bac36', 10) == 51; // Returns true

4
Radix không còn cần thiết trong năm 2016.

7
Nó có thể không dành cho các trình duyệt mới hơn nhưng radix vẫn được yêu cầu để tương thích ngược.
Giáo sư lập trình

những gì về '', hoặc '02 "hoặc" 02 + 1 "hoặc" 03,12 "hoặc" 03.12 "?
stackdave

3
Lưu ý rằng điều này bỏ qua dữ liệu xấu sau số. Ví dụ, parseInt('0asdf', 10)sản xuất 0.
Sam

121

Có hai cách chính để chuyển đổi một chuỗi thành một số trong javascript. Một cách là phân tích cú pháp và cách khác là thay đổi kiểu của nó thành Số. Tất cả các thủ thuật trong các câu trả lời khác (ví dụ: unary plus) liên quan đến việc ép buộc kiểu chuỗi thành một số. Bạn cũng có thể làm điều tương tự một cách rõ ràng với hàm Number.

Phân tích cú pháp

var parsed = parseInt("97", 10);

parseInt và parseFloat là hai hàm được sử dụng để phân tích chuỗi thành số. Phân tích cú pháp sẽ dừng âm thầm nếu nó chạm vào một ký tự mà nó không nhận ra, điều này có thể hữu ích cho việc phân tích chuỗi như "92px", nhưng nó cũng hơi nguy hiểm, vì nó sẽ không gây ra bất kỳ lỗi nào cho đầu vào xấu, thay vào đó bạn sẽ lấy lại NaN trừ khi chuỗi bắt đầu bằng số. Khoảng trắng ở đầu chuỗi bị bỏ qua. Đây là một ví dụ về việc nó làm một cái gì đó khác với những gì bạn muốn và không đưa ra dấu hiệu nào cho thấy có gì sai:

var widgetsSold = parseInt("97,800", 10); // widgetsSold is now 97

Đó là một thực hành tốt để luôn chỉ định cơ số là đối số thứ hai. Trong các trình duyệt cũ hơn, nếu chuỗi bắt đầu bằng 0, nó sẽ được hiểu là bát phân nếu cơ số không được chỉ định khiến nhiều người ngạc nhiên. Hành vi cho hệ thập lục phân được kích hoạt bằng cách bắt đầu chuỗi bằng 0x nếu không có cơ số được chỉ định, ví dụ 0xff. Tiêu chuẩn thực sự thay đổi với ecmascript 5, vì vậy các trình duyệt hiện đại không còn kích hoạt bát phân khi có số 0 đứng đầu nếu không có cơ số nào được chỉ định. parseInt hiểu các cơ số lên đến cơ sở 36, trong trường hợp đó cả chữ in hoa và chữ thường đều được coi là tương đương.

Thay đổi loại chuỗi thành số

Tất cả các thủ thuật khác được đề cập ở trên không sử dụng parseInt, liên quan đến việc ép buộc chuỗi thành một số. Tôi thích làm điều này rõ ràng,

var cast = Number("97");

Điều này có hành vi khác với các phương thức phân tích cú pháp (mặc dù nó vẫn bỏ qua khoảng trắng). Nó nghiêm ngặt hơn: nếu nó không hiểu toàn bộ chuỗi hơn là trả về NaN, vì vậy bạn không thể sử dụng nó cho các chuỗi như thế nào 97px. Vì bạn muốn có một số nguyên thủy thay vì một đối tượng trình bao Số, hãy đảm bảo rằng bạn không đặt newtrước hàm Số.

Rõ ràng, chuyển đổi thành Số mang lại cho bạn một giá trị có thể là số float thay vì số nguyên, vì vậy nếu bạn muốn số nguyên, bạn cần sửa đổi nó. Có một vài cách để làm điều này:

var rounded = Math.floor(Number("97.654"));  // other options are Math.ceil, Math.round
var fixed = Number("97.654").toFixed(0); // rounded rather than truncated
var bitwised = Number("97.654")|0;  // do not use for large numbers

Bất kỳ toán tử bitwise nào (ở đây tôi đã thực hiện một bitwise hoặc, nhưng bạn cũng có thể thực hiện phủ định kép như trong câu trả lời trước đó hoặc bithift) sẽ chuyển đổi giá trị thành số nguyên 32 bit và hầu hết chúng sẽ chuyển đổi thành số nguyên đã ký. Lưu ý rằng điều này sẽ không muốn bạn muốn cho số nguyên lớn . Nếu số nguyên không thể được biểu diễn trong 32 bit, nó sẽ ngắt.

~~"3000000000.654" === -1294967296
// This is the same as
Number("3000000000.654")|0
"3000000000.654" >>> 0 === 3000000000 // unsigned right shift gives you an extra bit
"300000000000.654" >>> 0 === 3647256576 // but still fails with larger numbers

Để hoạt động chính xác với số lượng lớn hơn, bạn nên sử dụng các phương pháp làm tròn

Math.floor("3000000000.654") === 3000000000
// This is the same as
Math.floor(Number("3000000000.654"))

Gấu nhớ rằng tất cả những phương pháp này hiểu ký hiệu mũ, vì vậy 2e2200hơn NaN. Ngoài ra, Number hiểu "Vô cực", trong khi các phương thức phân tích không.

Tập quán

Không chắc là một trong hai phương pháp này thực hiện chính xác những gì bạn muốn. Ví dụ: thông thường tôi sẽ muốn ném lỗi nếu phân tích cú pháp thất bại và tôi không cần hỗ trợ cho Infinity, hàm mũ hoặc khoảng trắng hàng đầu. Tùy thuộc vào usecase của bạn, đôi khi việc viết một hàm chuyển đổi tùy chỉnh sẽ rất hợp lý.

Luôn kiểm tra xem đầu ra của Số hoặc một trong các phương thức phân tích là loại số bạn mong đợi. Bạn gần như chắc chắn sẽ muốn sử dụng isNaNđể đảm bảo số đó không phải là NaN (thường là cách duy nhất bạn phát hiện ra rằng phân tích cú pháp thất bại).


6
Nó phụ thuộc vào việc bạn có muốn mã của mình chấp nhận 97,8,00và tương tự hay không. Một mẹo đơn giản là thực hiện một thao .replace(/[^0-9]/g, "")tác sẽ loại bỏ tất cả các chữ số không có trong chuỗi của bạn và sau đó thực hiện chuyển đổi sau đó. Điều này tất nhiên sẽ bỏ qua tất cả các loại chuỗi điên mà bạn có thể nên mắc lỗi thay vì chỉ phân tích cú pháp ...
kybernetikos

6
@kybernetikos có lẽ nên .replace(/[^0-9.]/g, ""), nếu không "1.05" sẽ trở thành "105".
J.Steve

Hoàn toàn đúng, mặc dù tôi sẽ không sử dụng một cái gì đó như thế cho mã quan trọng - có rất nhiều cách nó có thể cho phép một cái gì đó thông qua bạn thực sự không muốn bỏ qua.
kybernetikos

2
Tôi thấy việc sử dụng Số dễ đọc hơn nhiều trong mã vì vậy cảm ơn bạn đã chỉ ra nó như một giải pháp.
carlin.scott

1
@kybernetikos Trong var fixed = Number("97.654").toFixed(0); // rounded rather than truncated, chúng tôi nhận được một string(vì .toFixedphương thức) thay vì một number(số nguyên). Nếu chúng ta muốn số nguyên được làm tròn, có lẽ tốt hơn là chỉ sử dụngMath.round("97.654");
Edu Zamora

50

ParseInt () và + khác nhau

parseInt("10.3456") // returns 10

+"10.3456" // returns 10.3456

36

Mặc dù một câu hỏi cũ, nhưng có lẽ điều này có thể hữu ích cho ai đó.

Tôi sử dụng cách chuyển đổi chuỗi thành số int

var str = "25";       // string
var number = str*1;   // number

Vì vậy, khi nhân với 1, giá trị không thay đổi, nhưng js sẽ tự động trả về một số.

Nhưng như được hiển thị bên dưới, nên sử dụng số này nếu bạn chắc chắn rằng đó strlà một số (hoặc có thể được biểu diễn dưới dạng số), nếu không nó sẽ trả về NaN - không phải là số.

bạn có thể tạo chức năng đơn giản để sử dụng, vd

function toNumber(str) {
   return str*1;
}

nhập mô tả hình ảnh ở đây


36

Nhanh nhất

var x = "1000"*1;

Kiểm tra

Dưới đây là một chút so sánh về tốc độ (chỉ dành cho Mac Os) ... :)

Đối với chrome 'plus' và 'mul' là nhanh nhất (> 700.000,00 op / giây), 'Math.floor' là chậm nhất. Đối với Firefox, 'cộng' là chậm nhất (!) 'Mul' là nhanh nhất (> 900.000.000 op / giây). Trong Safari, 'parseInt' là fastes, 'number' là chậm nhất (nhưng resulats khá giống nhau,> 13.000.000 <31.000.000). Vì vậy, Safari cho cast cast to int chậm hơn 10 lần so với các trình duyệt khác. Vì vậy, người chiến thắng là ' mul ' :)

Bạn có thể chạy nó trên trình duyệt của mình bằng liên kết này https://jsperf.com/js-cast-str-to-number/1

nhập mô tả hình ảnh ở đây

Cập nhật

Tôi cũng kiểm tra var x = ~~"1000";- trên Chrome và Safari chậm hơn một chút so với var x = "1000"*1(<1%), trên Firefox nhanh hơn một chút (<1%). Tôi cập nhật hình ảnh trên và thử nghiệm


Không có sự khác biệt đáng kể giữa kết quả xét nghiệm A, B, E và F - về cơ bản chúng đều giống nhau,
Alf Eaton

33

Hãy thử parseInt.

var number = parseInt("10", 10); //number will have value of 10.

4
Bạn cũng có thể muốn bao gồm cả cơ số với điều đó: var number = parseInt ("10", 10);
Joel Coehoorn

27

Tôi đã đăng câu trả lời sai ở đây, xin lỗi. đã sửa.

Đây là một câu hỏi cũ, nhưng tôi thích thủ thuật này:

~~"2.123"; //2
~~"5"; //5

Âm hai bit giảm xuống bất cứ thứ gì sau dấu thập phân VÀ chuyển đổi nó thành định dạng số. Tôi đã nói rằng nó nhanh hơn một chút so với chức năng gọi và không có gì, nhưng tôi không hoàn toàn bị thuyết phục.

EDIT: Một phương pháp khác tôi vừa thấy ở đây (một câu hỏi về toán tử javascript >>>, đó là dịch chuyển bên phải bằng 0) cho thấy việc dịch chuyển một số bằng 0 với toán tử này sẽ chuyển đổi số thành uint32 , điều này rất tốt nếu bạn cũng muốn nó không dấu . Một lần nữa, điều này chuyển đổi thành một số nguyên không dấu , có thể dẫn đến các hành vi lạ nếu bạn sử dụng một số đã ký.

"-2.123" >>> 0; // 4294967294
"2.123" >>> 0; // 2
"-5" >>> 0; // 4294967291
"5" >>> 0; // 5

19

Cẩn thận nếu bạn sử dụng parseInt để chuyển đổi một dấu phẩy trong ký hiệu khoa học! Ví dụ:

parseInt("5.6e-14") 

sẽ cho kết quả

5 

thay vì

0

14
Sử dụng parseIntsẽ không hoạt động đúng cho một float. parseFloathoạt động đúng trong trường hợp này.
benekastah

16

Để chuyển đổi một Chuỗi thành Số nguyên, tôi khuyên bạn nên sử dụng parseFloat và KHÔNG parseInt. Đây là lý do tại sao:

Sử dụng parseFloat:

parseFloat('2.34cms')  //Output: 2.34
parseFloat('12.5')     //Output: 12.5
parseFloat('012.3')    //Output: 12.3

Sử dụng phân tích cú pháp:

parseInt('2.34cms')  //Output: 2
parseInt('12.5')     //Output: 12
parseInt('012.3')    //Output: 12

Vì vậy, nếu bạn đã nhận thấy parseInt loại bỏ các giá trị sau số thập phân, trong khi parseFloat cho phép bạn làm việc với các số dấu phẩy động và do đó phù hợp hơn nếu bạn muốn giữ lại các giá trị sau số thập phân. Sử dụng parseInt khi và chỉ khi bạn chắc chắn rằng bạn muốn giá trị nguyên.


6
Câu hỏi là "Làm cách nào để chuyển đổi Chuỗi thành số nguyên trong javascript"
Pierre Arlaud

15

Cũng như một lưu ý phụ: Mootools có chức năng toInt () được sử dụng trên bất kỳ chuỗi gốc nào (hoặc float (hoặc số nguyên)).

"2".toInt()   // 2
"2px".toInt() // 2
2.toInt()     // 2

7
Ví dụ thứ ba gây ra a SyntaxError, bạn nên sử dụng dấu chấm kép, ví dụ: 2..toInt();dấu chấm đầu tiên sẽ kết thúc biểu diễn của một Numberchữ và dấu chấm thứ hai là trình truy cập thuộc tính.
CMS

2
câu hỏi này không phải về mootools mà là về JavaScript.
Liam

14

Vui lòng xem ví dụ dưới đây. Nó sẽ giúp xóa tan nghi ngờ của bạn

Example                  Result

parseInt("4")            4
parseInt("5aaa")         5
parseInt("4.33333")      4
parseInt("aaa");         NaN (means "Not a Number")

bằng cách sử dụng hàm parseint Nó sẽ chỉ cung cấp cho op số nguyên chứ không phải chuỗi


12

chúng ta có thể sử dụng +(stringOfNumber)thay vì sử dụngparseInt(stringOfNumber)

Vd: +("21")trả về int của 21 như parseInt("21").

chúng ta có thể sử dụng toán tử "+" unary này để phân tích cú pháp float ...


1
Nhưng bạn không thể sử dụng nó trong công thức! Tức là (1 + ("21")) * 10 === 1210!
Alexander Vasilyev

2
@AlexanderVasilyev Tôi nghĩ bạn có thể, bạn sẽ không sử dụng dấu ngoặc đơn bổ sung xung quanh +chứ?
NiCk Newman

@NiCkNewman Tôi nhận được + ("21") từ ví dụ trong câu trả lời chúng tôi nhận xét.
Alexander Vasilyev

Tôi thực sự không thích giải pháp này. Nó không rõ ràng như parseIntlà. Một triển khai phổ biến là const myNumber = +myNumberAsAStringtrông giống như một tiêu chuẩn +=hoặc =+toán tử thoạt nhìn. Ngoài ra Nếu sử dụng không chính xác, nó có thể dẫn đến lỗi nối. Giải pháp này dựa trên thực tế là 0 được coi là phía bên trái khi không có số nào được cung cấp.
Bão Muller

10

Hãy thử str - 0chuyển đổi stringsang number.

> str = '0'
> str - 0
  0
> str = '123'
> str - 0
  123
> str = '-12'
> str - 0
  -12
> str = 'asdf'
> str - 0
  NaN
> str = '12.34'
> str - 0
  12.34

Dưới đây là hai liên kết để so sánh hiệu suất của một số cách để chuyển đổi chuỗi thành int

https://jsperf.com/number-vs-parseint-vs-plus

http://phrogz.net/js/opes_to_number.html


1
@AlexanderYau, mỗi này doc , sự '1'sẽ được chuyển đổi sang 1bằng ToNumber, sau đó 1 - 0sẽ là1
zangw

10

Có nhiều cách trong JavaScript để chuyển đổi một chuỗi thành một giá trị số ... Tất cả đều đơn giản và tiện dụng, hãy chọn cách thức nào phù hợp với bạn:

var num = Number("999.5"); //999.5
var num = parseInt("999.5", 10); //999
var num = parseFloat("999.5"); //999.5
var num = +"999.5"; //999.5

Ngoài ra, bất kỳ phép toán nào cũng chuyển đổi chúng thành số, ví dụ ...

var num = "999.5" / 1; //999.5
var num = "999.5" * 1; //999.5
var num = "999.5" - 1 + 1; //999.5
var num = "999.5" - 0; //999.5
var num = Math.floor("999.5"); //999
var num = ~~"999.5"; //999

Cách ưa thích của tôi là sử dụng +dấu hiệu, đó là cách thanh lịch để chuyển đổi một chuỗi thành số trong JavaScript.


8

Google đã cho tôi câu trả lời này là kết quả, vì vậy ...

Tôi thực sự cần phải "lưu" một chuỗi dưới dạng một số nguyên, để liên kết giữa C và JavaScript, vì vậy tôi chuyển đổi chuỗi thành một giá trị số nguyên:

/*
    Examples:
        int2str( str2int("test") ) == "test" // true
        int2str( str2int("t€st") ) // "t¬st", because "€".charCodeAt(0) is 8364, will be AND'ed with 0xff
    Limitations:
        max 4 chars, so it fits into an integer
*/
function str2int(the_str) {
    var ret = 0;
    var len = the_str.length;
    if (len >= 1) ret += (the_str.charCodeAt(0) & 0xff) <<  0;
    if (len >= 2) ret += (the_str.charCodeAt(1) & 0xff) <<  8;
    if (len >= 3) ret += (the_str.charCodeAt(2) & 0xff) << 16;
    if (len >= 4) ret += (the_str.charCodeAt(3) & 0xff) << 24;
    return ret;
}
function int2str(the_int) {
    var tmp = [
        (the_int & 0x000000ff) >>  0,
        (the_int & 0x0000ff00) >>  8,
        (the_int & 0x00ff0000) >> 16,
        (the_int & 0xff000000) >> 24
    ];
    var ret = "";
    for (var i=0; i<4; i++) {
        if (tmp[i] == 0)
            break;
        ret += String.fromCharCode(tmp[i]);
    }
    return ret;
}

4
Đó là một cách thú vị để lưu trữ và truy xuất các giá trị 4 byte. Nó không trả lời cách giải thích thông thường của câu hỏi: làm thế nào để chuyển đổi một chuỗi đại diện của một số thành một giá trị số nguyên. Bất kể, int2strhàm của bạn dừng lại nếu một byte bằng 0, có thể là một phần tử hợp pháp trong giá trị, do đó if... breaknên được loại bỏ để bạn nhận được giá trị 4 byte hoàn chỉnh.
Suncat2000

8

Theo tôi, không có câu trả lời nào bao gồm tất cả các trường hợp cạnh vì phân tích cú pháp float sẽ dẫn đến lỗi.

function parseInteger(value) {
    if(value === '') return NaN;
    const number = Number(value);
    return Number.isInteger(number) ? number : NaN;
}
parseInteger("4")            // 4
parseInteger("5aaa")         // NaN
parseInteger("4.33333")      // NaN
parseInteger("aaa");         // NaN

1
Trả lại Không phải là một số là một chút tích cực cho một float, bạn không nghĩ sao?
Thomas Ayoub

2
parseInteger, không phải parseNumber. Tôi đoán mọi giải pháp là một cách giải quyết vì JS không hỗ trợ số nguyên và số float là các loại riêng biệt. Chúng tôi có thể quay lại nullthay vì NaN, nếu Not A Number là sai lệch.
Michał Knapik

4

Đây là giải pháp đơn giản nhất

let myNumber = "123" | 0;

Giải pháp dễ dàng hơn

let myNumber = +"123";

2

Tất cả những điều trên là chính xác. Hãy chắc chắn trước đây rằng đây là một số trong một chuỗi bằng cách thực hiện "typeot x === 'number'" khác, nó sẽ trả về NaN

 var num = "fsdfsdf242342";
 typeof num => 'string';

 var num1 = "12423";
 typeof num1 => 'number';
 +num1 = > 12423`

Trong nút v8.5.0, var num1 = "12423"; typeof num1;trả về string.
Edu Zamora

2

Một tùy chọn khác là nhân đôi giá trị XOR với chính nó:

var i = 12.34;
console.log('i = ' + i);
console.log('i ⊕ i ⊕ i = ' + (i ^ i ^ i));

Điều này sẽ xuất ra:

i = 12.34
i  i  i = 12

2

Tôi chỉ thêm một dấu cộng (+) trước chuỗi và đó là giải pháp!

+"052254" //52254

Hy vọng nó giúp ;)


2

Tổng các phép nhân các chữ số với lũy thừa tương ứng là mười:

tức là: 123 = 100 + 20 + 3 = 1 * 100 + 2 + 10 + 3 * 1 = 1 * (10 ^ 2) + 2 * (10 ^ 1) + 3 * (10 ^ 0)

function atoi(array) {

// use exp as (length - i), other option would be to reverse the array.
// multiply a[i] * 10^(exp) and sum

let sum = 0;

for (let i = 0; i < array.length; i++) {
    let exp = array.length-(i+1);
    let value = array[i] * Math.pow(10,exp);
    sum+=value;
}

return sum;

}


1

function doSth(){
  var a = document.getElementById('input').value;
  document.getElementById('number').innerHTML = toNumber(a) + 1;
}
function toNumber(str){
  return +str;
}
<input id="input" type="text">
<input onclick="doSth()" type="submit">
<span id="number"></span>


1

Tôi dùng cái này

String.prototype.toInt = function (returnval) { 
    var i = parseInt(this);
    return isNaN(i) ? returnval !== undefined ? returnval : - 1  :      i; 
}

Bằng cách này, tôi luôn luôn nhận được một int trở lại.


1

Cách an toàn nhất để đảm bảo bạn có được số nguyên hợp lệ:

let integer = (parseInt(value, 10) || 0);

Ví dụ:

// Example 1 - Invalid value:
let value = null;
let integer = (parseInt(value, 10) || 0);
// => integer = 0
// Example 2 - Valid value:
let value = "1230.42";
let integer = (parseInt(value, 10) || 0);
// => integer = 1230
// Example 3 - Invalid value:
let value = () => { return 412 };
let integer = (parseInt(value, 10) || 0);
// => integer = 0

1
function parseIntSmarter(str) {
    // ParseInt is bad because it returns 22 for "22thisendsintext"
    // Number() is returns NaN if it ends in non-numbers, but it returns 0 for empty or whitespace strings.
    return isNaN(Number(str)) ? NaN : parseInt(str, 10);
}

0

bạn có thể sử dụng dấu cộng, ví dụ =>

var personAge = '24'; var personAge1 = (+ personAge)

sau đó bạn có thể thấy typeof personAge là số

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.