Giả sử tôi có một mảng javascript, như vậy:javascript: Sắp xếp mảng và trả về một mảng của indicies cho biết vị trí của các nguyên tố được sắp xếp liên quan đến các yếu tố gốc
var test = ['b', 'c', 'd', 'a'];
Tôi muốn sắp xếp mảng . Rõ ràng, tôi chỉ có thể làm điều này để sắp xếp mảng:
test.sort(); //Now test is ['a', 'b', 'c', 'd']
Nhưng điều tôi thực sự muốn là một chỉ số cho biết vị trí của các yếu tố được sắp xếp đối với các phần tử gốc. Tôi không chắc chắn làm thế nào để cụm từ này, vì vậy có lẽ đó là lý do tại sao tôi gặp khó khăn trong việc tìm ra cách để làm điều đó.
Nếu một phương pháp như vậy được gọi là sortIndices(), sau đó là những gì tôi muốn là:
var indices = test.sortIndices();
//At this point, I want indices to be [3, 0, 1, 2].
'a' là ở vị trí 3, 'b' là 0, 'c' là 1 và 'd' là 2 trong mảng ban đầu. Do đó, [3, 0, 1, 2].
Một giải pháp sẽ là sắp xếp một bản sao của mảng, sau đó quay vòng qua mảng được sắp xếp và tìm vị trí của từng phần tử trong mảng ban đầu. Nhưng, điều đó cảm thấy vụng về.
Có phương pháp hiện tại nào thực hiện những gì tôi muốn không? Nếu không, làm thế nào bạn sẽ đi về viết một phương pháp thực hiện điều này?
+1 nhưng tôi nghĩ bạn không nên sử dụng vòng lặp 'for .. in' trên mảng. – Tomalak
Đó là một ý tưởng hay. Tôi sẽ thử. (Tôi sẽ chấp nhận một khi tôi nhận được nó làm việc.) – Jeremy
@Tomalak: Tôi đồng ý với bạn về cho .. in Tôi đã gặp rất nhiều vấn đề với nó. – Jeremy