สมมุติว่าฉันต้องการฟังก์ชันเรียงลำดับที่คืนค่าสำเนาเรียงลำดับของอาร์เรย์ที่ป้อนเข้า ฉันพยายามอย่างไร้เดียงสา
function sort(arr) {
return arr.sort();
}
และฉันทดสอบกับสิ่งนี้ซึ่งแสดงให้เห็นว่าsortวิธีการของฉันจะกลายพันธุ์อาร์เรย์
var a = [2,3,7,5,3,7,1,3,4];
sort(a);
alert(a); //alerts "1,2,3,3,3,4,5,7,7"
ฉันลองวิธีนี้เช่นกัน
function sort(arr) {
return Array.prototype.sort(arr);
}
แต่มันไม่ทำงานเลย
มีวิธีที่ตรงไปตรงมานี้เป็นวิธีที่ไม่ต้องใช้อัลกอริทึมการเรียงลำดับของฉันเองหรือคัดลอกองค์ประกอบทุกส่วนของอาเรย์ลงในใหม่หรือไม่?
.sortต้องการthisค่าที่จะเป็นอาร์เรย์ดังนั้นสำหรับตัวอย่างข้อมูลสุดท้ายที่จะทำงานคุณจะทำ.sort.call(arr)(แม้ว่ามันจะไม่ได้แก้ปัญหาของคุณ)