Xác định dấu của một số giờ đây cực kỳ dễ dàng với ES6's Math. dấu 👏 Nó sẽ cho biết số đó là số dương, số âm hay số không
const positive = 5;
const negative = -5;
const zero = 0;
Math.sign[positive]; // 1
Math.sign[negative]; // -1
Math.sign[zero]; // 0
Toán học. ký Giá trị trả về
1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
2 có 5 giá trị có thể trả về1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
Math.sign[8]; // 1
Math.sign[-8]; // -1
Math.sign[0]; // 0
Math.sign[-0]; // -0
Math.sign[NaN]; // NaN
Math.sign['hello']; // NaN
Math.sign[]; //NaN
Lưu ý, đối số truyền vào hàm này sẽ được chuyển ngầm thành kiểu
1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
3Toán học. ký Gotcha
Một vấn đề phổ biến đang nghĩ rằng
1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
4 trả về giá trị đối số đã chuyển đổi. 1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
4 chỉ trả về dấu của một số. Nó không trả về giá trịMath.sign[-8];
// ✅ return -1
// ❌ It doesn't return -8
Toán học. dấu vs toán tử so sánh
Có một câu hỏi thực sự hay từ cộng đồng
Tại sao lại sử dụng
4 khi tôi có thể sử dụng toán tử so sánh?1 // positive number -1 // negative number 0 // positive zero -0 // negative zero NaN // not a number
if [number > 0] {
// Positive
} else {
// Negative
}
đấu với
if [Math.sign[number] > 0] {
// Positive
} else {
// Negative
}
Thật vậy, nếu bạn chỉ đang kiểm tra trạng thái boolean, thì tôi sẽ chỉ sử dụng toán tử so sánh thay vì sử dụng
1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
4. Nhưng khi 1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
4 tỏa sáng thì nó trả về một giá trị số. Điều này có nghĩa là bạn có thể thực hiện các phép tínhconst number = 5;
number > 0; // true
Math.sign[number]; // 1
Giải quyết một thách thức về thuật toán với 1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
4
1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
Vì vậy, nó cho phép tôi giải quyết thách thức thuật toán này. "Đảo ngược một số nguyên"
Input: 123;
Output: 321;
Input: -123;
Output: -321;
function reverseInteger[num] {
const numArray = Math.abs[num] // Get the absolute value of our number > 321
.toString[] // Convert our number to a string > '321'
.split[''] // Convert our string of numbers to an array > [3, 2, 1]
.reverse[] // Reverse our array of numbers > [1, 2, 3]
.join['']; // Convert our array back to a string > 123
const sign = Math.sign[num]; // -1
return numArray * sign;
// Multiply our reverse string with the sign will produce the correct reverse number
}
reverseInteger[-321]; // -123
Câu hỏi thuật toán này là từ "Reverse an Integer" của Leetcode. Tôi đã chỉnh sửa yêu cầu của câu hỏi để đơn giản hóa phần trình diễn của chúng tôi. Để xem giải pháp thực tế, đây là giải pháp từ @ loia5tqd001
Đây thực sự là lần đầu tiên tôi phát hiện ra chức năng này. Đó là lý do tại sao tôi thích nhìn vào các giải pháp của người khác. Thật thú vị khi xem cách người khác giải quyết vấn đề. Ngay cả khi giải pháp không tốt, tôi cũng đọc chúng, vì nó dạy tôi những điều nên tránh 😉. Không có kiến thức nào là lãng phí 💪. Đó là tất cả mở rộng bộ công cụ của tôi. Cũng giống như những cỗ máy học tập đó, bạn càng nạp nhiều dữ liệu thì nó càng nhận được nhiều dữ liệu hơn. Mình nghĩ đầu óc mình cũng thế. Tôi cần thấy rất nhiều giải pháp để tôi trở nên tốt hơn 😄
Đó là lý do tại sao trong rất nhiều mẩu tin nhỏ của tôi, tôi đề cập đến các cách khác nhau để giải quyết một vấn đề nào đó. Vì không bao giờ có chức năng TỐT NHẤT. Cách tốt nhất luôn phụ thuộc vào tình hình. Bộ công cụ của bạn càng lớn, cơ hội bạn tìm ra cách tốt nhất càng cao 👍
Số không âm
Vì vậy, bạn có thể nhận thấy rằng
1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
4 trả về số không âmMath.sign[0]; // 0
Math.sign[-0]; // -0
Và câu hỏi tiếp theo của bạn là, số 0 âm này là cái quái gì vậy 🤨. Kyle Simpson của "You Don't Know JS" giải thích điều đó tốt nhất
Bây giờ, tại sao chúng ta cần một số 0 âm, bên cạnh những câu đố học thuật?
Có một số ứng dụng mà nhà phát triển sử dụng độ lớn của một giá trị để biểu thị một phần thông tin [chẳng hạn như tốc độ di chuyển trên mỗi khung hình động] và dấu của số đó để biểu thị một phần thông tin khác [chẳng hạn như hướng của chuyển động đó]
Ví dụ, trong các ứng dụng đó, nếu một biến số tiến đến số 0 và nó mất dấu, thì bạn sẽ mất thông tin về hướng mà nó đang di chuyển trước khi nó về số không. Giữ nguyên dấu hiệu của số 0 để tránh mất thông tin không mong muốn
YDKJS - Type & Grammer - Zeros
Toán học. ký Hỗ trợ trình duyệt
Hỗ trợ tuyệt vời cho tất cả các trình duyệt hiện đại. Thật không may, Internet Explorers quá sành điệu để chơi với phần còn lại của lớp. Vì vậy, không có hỗ trợ ở đó
Trình duyệt Chrome✅Firefox✅Safari✅Edge✅Internet Explorer❌Mã Tidbit cho IE
Nhưng đừng lo, đây là một đoạn mã thay thế dành cho bạn. Điều này sẽ hoạt động trên Internet Explorer và các trình duyệt cũ hơn 👍
1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
0Toán học. ký Polyfill
Hoặc tiếp tục sử dụng
1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
4 và chỉ cần thêm cái này1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
1Đầu vào của cộng đồng
trả về [a < 0]? . [a > 0]? . 0;
@letmakesomebug. Toán học. sign[] phân biệt -0 và +0, cái này xuất ra +0 cho cả hai, nó không giống nhau. Dù sao thì Toán. sign[] đối với tôi dễ đọc hơn so với double ternary, ít thời gian viết hơn, ít thời gian hơn để đọc và hiểu