2014-11-14 4 views
0

Так что я знаю, что существует метод .sort(), который можно использовать для сортировки массивов в JavaScript, но я пытаюсь сам построить метод для практики. Я пытаюсь сделать это только для массива чисел. На данный момент я работаю с 5 номерами в массиве, но я хотел бы, чтобы он был динамическим, чтобы он мог создавать массив anysize. Есть ли способ легко воспроизвести этот код, чтобы он масштабировался или мне нужно было использовать совершенно другой подход?JavaScript Building Multiple Temporary Variables

var myArray = [3,2,4,5,1]; 

function sort(array) { 
    var max = 0; 
    var mid3 = 0; 
    var mid2 = 0; 
    var mid1 = 0; 
    var min = 0; 
    var sortArr = []; 
    for (var i = 0; i < array.length; i++) { 
    if (array[i] > max) { 
     min = mid1 
     mid1 = mid2 
     mid2 = mid3 
     mid3 = max 
     max = array[i]; 
    } else if (array[i] > mid3) { 
     min = mid1 
     mid1 = mid2 
     mid2 = mid3 
     mid3 = array[i]; 
    } else if (array[i] > mid2) { 
     min = mid1 
     mid1 = mid2 
     mid2 = array[i]; 
    } else if (array[i] > mid1) { 
     min = mid1 
     mid1 = array[i]; 
    } else { 
     min = array[i] 
    } 
    } 
    sortArr.push(max, mid3, mid2, mid1, min); 
    return sortArr 
} 

console.log(sort(myArray)) 

Я думал о строительстве какого-то переменный конструктор, который будет что-то вроде ниже, а затем передать, что в функцию, так что некоторые из логики абстрактные, но не уверен, если это возможно. Тогда вам понадобится какой-то способ для создания операторов if else и метода push для обновления. Я не уверен, есть ли там какое-то простое решение, которое мне не хватает, поэтому любая помощь приветствуется.

function varConstruct (num) { 
    for (var i = 0; i < num; i++) { 
    "mid" + i; 
    } 
    } 
+0

myArray ["mid" + i] ??? – Vinz243

+4

Вы делаете слишком много сравнений. Посмотрите на сортировку быстрого сортировки или слияния - см. Http://www.sorting-algorithms.com/ –

+0

Возможно, вы захотите посмотреть рекурсию, если хотите сделать это чисто. –

ответ

0

Возможно, используйте метод arguments.length, доступный в javascript. Таким образом вы можете передать динамическое количество аргументов своей функции и все равно сможете получить к ним доступ. Вот лучшее описание того, что он делает.

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments/length

Надежда, что помогает.