Mục đích của chúng tôi là viết một hàm JavaScript nhận vào một số và trả về số đảo ngược của nó
Ví dụ: đảo ngược của 678 −
876
Đây là mã để đảo ngược một số trong JavaScript –
Thí dụ
const num = 124323; const reverse = [num] => parseInt[String[num] .split[""] .reverse[] .join[""], 10]; console.log[reverse[num]];
đầu ra
Đầu ra trong bảng điều khiển sẽ là -
323421
Giải trình
- Giả sử num = 123
- Chúng tôi chuyển đổi số thành chuỗi → num trở thành '123'
- Chúng tôi tách '123' → nó trở thành ['1', '2', '3']
- Chúng ta đảo ngược mảng → nó trở thành [‘3’, ‘2’, ‘1’]
- Chúng tôi tham gia mảng để tạo thành một chuỗi → nó trở thành '321'
- Cuối cùng, chúng tôi phân tích chuỗi thành Int và trả về → 321
Gần đây tôi đã được hỏi cách giải quyết vấn đề này và đây là giải pháp ban đầu của tôi
đầu ra mong muốn. 123 => 321, -15 => -51, 500 => 5
function revInt[num] {
// Use toString[] to convert it into a String
// Use the split[] method to return a new array: -123 => ['-', '1','2','3']
// Use the reverse[] method to reverse the new created array: ['-', '1','2','3'] => ['3','2','1','-'];
// Use the join[] method to join all elements of the array into a string
let val = num.toString[].split[''].reverse[].join[''];
// If the entered number was negative, then that '-' would be the last character in
// our newly created String, but we don't want that, instead what we want is
// for it to be the first one. So, this was the solution from the top of my head.
// The endsWith[] method determines whether a string ends with the characters of a specified string
if [val.endsWith['-']] {
val = '-' + val;
return parseInt[val];
}
return parseInt[val];
}
console.log[revInt[-123]];
Một cách giải quyết tốt hơn
Sau khi tôi suy nghĩ thêm, tôi đã nghĩ ra như sau
// Here we're converting the result of the same functions used in the above example to
// an Integer and multiplying it by the value returned from the Math.sign[] function.
// NOTE: The Math.sign[] function returns either a positive or negative +/- 1,
// indicating the sign of a number passed into the argument.
function reverseInt[n] {
return parseInt[n.toString[].split[''].reverse[].join['']] * Math.sign[n]
}
console.log[reverseInt[-123]];
GHI CHÚ. Giải pháp thứ 2 đơn giản hơn nhiều, IMHO
Đảo ngược một chuỗi hoặc đảo ngược một số là một trong những câu hỏi phổ biến trong các cuộc phỏng vấn lập trình. Chúng ta hãy xem làm thế nào điều này được thực hiện
Quy định/Hạn chế
- Số âm nên giữ nguyên số âm
Ví dụ. -12345
trở thành -54321
- Mọi số 0 đứng đầu phải được loại bỏ
Ví dụ.
function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
0 trở thành function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
1 chứ không phải function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
2- Hàm có thể chấp nhận số float hoặc số nguyên
Ví dụ.
function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
3 trở thành function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
4- Hàm sẽ trả về số nguyên là số nguyên
Ví dụ.
function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
5 trở thành function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
6 chứ không phải function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
7Giải bằng hàm mũi tên
const reversedNum = num => parseFloat[num.toString[].split[''].reverse[].join['']] * Math.sign[num]
Giải quyết với một chức năng thông thường
function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
Sự khác biệt giữa chức năng Mũi tên & Chức năng thông thường
Trong ví dụ này, điểm khác biệt duy nhất giữa Hàm mũi tên và Hàm thông thường là hàm Thông thường cần cung cấp một giá trị
function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
8 rõ ràngCác hàm mũi tên có một giá trị ngầm định
function reversedNum[num] {
return [
parseFloat[
num
.toString[]
.split['']
.reverse[]
.join['']
] * Math.sign[num]
]
}
8 — nếu chúng có thể được viết trong một dòng mà không cần dấu ngoặc ______17_______0Hãy phá vỡ các bước xuống
- Chuyển đổi số thành một chuỗi
let num = -5432100
num.toString[]
// num = '-5432100'
1 chuyển đổi số đã cho thành Chuỗi. Chúng tôi làm điều này để chúng tôi có thể sử dụng chức năng let num = -5432100
num.toString[]
// num = '-5432100'
2 trên đó tiếp theolet num = -5432100
num.toString[]
// num = '-5432100'
- Tách chuỗi thành một mảng
let num = -5432100
num.toString[]
// num = '-5432100'
3 chuyển Chuỗi thành Mảng ký tự. Chúng tôi làm điều này để có thể sử dụng chức năng đảo ngược Mảng [không hoạt động trên Chuỗi]// num = '-5432100'
num.split['']
// num = [ '-', '5', '4', '3', '2', '1', '0', '0' ]
- Đảo ngược mảng
let num = -5432100
num.toString[]
// num = '-5432100'
4 đảo ngược thứ tự của các phần tử trong mảng// num = [ '-', '5', '4', '3', '2', '1', '0', '0' ]
num.reverse[]
// num = [ '0', '0', '1', '2', '3', '4', '5', '-' ]
- Tham gia nó trở lại thành một chuỗi
let num = -5432100
num.toString[]
// num = '-5432100'
5 tập hợp lại các ký tự bị đảo ngược thành Chuỗi// num = [ '0', '0', '1', '2', '3', '4', '5', '-' ]
num.join['']
// num = '0012345-'
- Phân tích giá trị đầu vào thành một số dấu phẩy động
let num = -5432100
num.toString[]
// num = '-5432100'
6 chuyển đổi let num = -5432100
num.toString[]
// num = '-5432100'
7 thành float từ Chuỗi// num = '0012345-'
parseFloat[num]
// num = 12345
Ghi chú.
let num = -5432100
num.toString[]
// num = '-5432100'
8 chạy cuối cùng [mặc dù nó nằm ở dòng đầu tiên của hàm] trên số bị đảo ngược và xóa mọi số 0 ở đầu- Nhân nó với dấu của số ban đầu — để duy trì giá trị âm
let num = -5432100
num.toString[]
// num = '-5432100'
9 nhân số với dấu của số ban đầu được cung cấp// original value of num = -5432100
// num = 12345
num * Math.sign[-5432100]
// num = -12345
Và bạn có nó rồi đấy
QUẢNG CÁO
QUẢNG CÁO
QUẢNG CÁO
Nếu bài viết này hữu ích, hãy tweet nó
Học cách viết mã miễn phí. Chương trình giảng dạy mã nguồn mở của freeCodeCamp đã giúp hơn 40.000 người có được việc làm với tư cách là nhà phát triển. Bắt đầu