Làm cách nào để chỉ lấy đầu vào số nguyên dương trong HTML?

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
3

Toá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

1 // positive number
-1 // negative number
0 // positive zero
-0 // negative zero
NaN // not a number
4 khi tôi có thể sử dụng toán tử so sánh?

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ính

const 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

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 âm

Math.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
0

Toá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ày

1 // 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

Có cách nào để ngăn số loại đầu vào nhận giá trị âm không?

Thêm một chút JavaScript để tắt nhập số âm. Để không cho phép nhập số âm, chúng ta cần thêm thuộc tính onkeypress và sử dụng một chút JavaScript tại đây. Bạn có thể đặt trực tiếp cái này vào HTML, vì vậy nó rất nhẹ.

Làm cách nào để chỉ lấy các giá trị dương trong js?

Sử dụng phương thức abs() . phương pháp Toán. abs() chuyển đổi số nguyên âm được cung cấp thành số nguyên dương.

Thuộc tính nào của thẻ bảng chỉ chấp nhận số dương?

Trả lời. Bạn có thể buộc đầu vào chỉ chứa số nguyên dương bằng cách thêm onkeypress trong thẻ đầu vào.