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

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

<input type="text" id="a" />
<input type="text" id="b" />

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ụ

<script>
function myFunction() {
    points.sort(function(a, b) {
    return parseInt(a)-parseInt(b); 
    }
}
</script>

…tại sao phải dùng ép kiểu trong khi có thể định dạng ngay trong thẻ input? :smile:

<input type="float" id="a" />
<input type="float" id="b" />

Sau cần tìm hiểu cứ thêm msdn vào là nó ra ngay :3

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

var numbers = [75, 53, 92, 100, 24, 55, 86,
              85, 43, 8, 84, 82, 100, 51];

function compareNumbers(a, b) {
  return a - b;
}
console.log(numbers.sort(compareNumbers));

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

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?