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

Nguyễn Hoàng viết 10:39 ngày 01/10/2018

ak mình nhầm, doạn này là nó dùng js để sửa html thôi bạn

akiko viết 10:45 ngày 01/10/2018

points.sort(function(a, b){return a - b});

Mình không hiểu đoạn này, c nói lại giúp mk đk k?

tran linh viết 10:52 ngày 01/10/2018

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).

akiko viết 10:47 ngày 01/10/2018

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?

Quang Minh viết 10:41 ngày 01/10/2018

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>
Quang Minh viết 10:46 ngày 01/10/2018

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

<input type="float" id="a" />
<input type="float" id="b" />
viết 10:46 ngày 01/10/2018

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.

Duong viết 10:41 ngày 01/10/2018

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

tran linh viết 10:50 ngày 01/10/2018

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.

Hoàng Văn Duy viết 10:41 ngày 01/10/2018

có float lun hở bạn , mk tưởng chỉ có number thui mak

Quang Minh viết 10:46 ngày 01/10/2018

bạn cứ code thử là biết thôi =))

Hung Pham viết 10:47 ngày 01/10/2018

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

softwareengineering.stackexchange.com
VirtuosiMedia

Why do some sorting methods sort by 1, 10, 2, 3...?

sorting
asked by VirtuosiMedia on 02:35AM - 30 Dec 11
Bài liên quan
0