01/10/2018, 08:37
Thắc mắc về javascript
Mình mới học java script.
Bạn nào giải thích giùm mk đoạn code này đk k? Mk đọc ở trên www.w3schools.com mà không hiểu
<html>
<body>
<p>Click the button to sort the array in ascending order.</p>
<button onclick="myFunction()">Try it</button>
<p id="demo"></p>
<script>
var points = [40, 100, 1, 5, 25, 10];
document.getElementById("demo").innerHTML = points;
function myFunction() {
points.sort(function(a, b){return a - b});
document.getElementById("demo").innerHTML = points;
}
</script>
</body>
</html>
Mình cảm ơn nhiều
Bài liên quan
ak mình nhầm, doạn này là nó dùng js để sửa html thôi bạn
Mình không hiểu đoạn này, c nói lại giúp mk đk k?
Hiểu nôm na thì, nếu ko có cái function ở trong thì hàm points.sort() sẽ tạo ra một chuỗi ngăn cách bằng dấu phảy và sắp xếp theo a,b,c… Với dãy ở trên thì sẽ là 1,10,100,25,40,5 (xếp số đầu tiên trước). Khi có hàm function (a,b) {return a - b} mà viết như thế thì nó hiểu là xét từ Trái qua phải, số bé trước, nghĩa là hàm này sẽ xếp dãy theo chiều tăng dần, nếu viết return b - a, thì từ trái qua phải xếp số to trước (dãy giảm).
Nếu viết return 0, thì nó giữ nguyên thứ tự.
Nếu viết hàm function (b,a) {return a - b} thì ngược lại, nó xét từ Phải sang trái, số bé bên phải (dãy giảm), nếu return b - a thì nó để số to bên phải (dãy tăng).
Thank bạn nhé.
Nhưng mình không hiểu chương trình nó lấy giá trị a,b như thế nào?
tạo thẻ input đi
nhưng khi dùng
document.getElementById('a').value
thì trong hàm phải ép kiểu để thực hiện phét toán (vì dữ liệu vào dưới dạng thô, text). thêm parseInt hoặc parseFloat.ví dụ
…tại sao phải dùng ép kiểu trong khi có thể định dạng ngay trong thẻ input?
Sau cần tìm hiểu cứ thêm msdn vào là nó ra ngay :3
MDN Web Docs
Array.prototype.sort()
The sort() method sorts the elements of an array in place and returns the array. The sort is not necessarily stable. The default sort order is according to string Unicode code points.
Tham số của hàm sort là 1 callback.
Khi gọi hàm sort, bên thân hàm chắc chắn sẽ có 1 đoạn.
callback(a, b) => đây là lúc chương trình truyền tham số vào hàm callback, truyền số như nào là việc của nó nha
giả sử là function(a,b) thì nó cứ lấy lần lượt 2 số, nếu a-b <0 thì nó hiểu số a < b, xếp a đầu tiên. Sau đấy nó lại gán a,b cho 2 số tiếp theo đến hết dãy. a,b chỉ là biến thôi mà, cứ được 1 số thì nó thêm vào chuỗi points.
có float lun hở bạn , mk tưởng chỉ có number thui mak
bạn cứ code thử là biết thôi =))
Phương thức sort() có chức năng sắp xếp chuỗi, mặc định theo thứ tự abc.
Nếu sắp xếp theo phương thức sort(), số từ 1 - 10 trong 1 mảng thì nhận được giá trị như thế này: [1, 10, 2, 3, 4, 5, 6, 7, 8, 9]. , 10 đứng trước 2 bởi vì 1 trước 2 trong trong bộ mã ký tự ASCII. cái này e search google về ASCII để hiểu rõ hơn.
Để sắp sếp 1 danh sanh sách sô từ nhỏ đến lớn trong 1 mảng, ta cần tạo 1 hàm so sánh để nói rằng chức năng sắp xếp làm thế nào để sắp sếp dữ liiệu
VD: sắp sếp các con số trong mảng từ nhỏ đến lớn
So sanh với 2 tham sô trong hàm chúng trả về 1 giá trị âm nếu a đứng trước b trong mảng sắp xếp
Trả vể 0 nếu a = b;
Trả về 1 số dương nếu a đứng sau b
Why do some sorting methods sort by 1, 10, 2, 3...?