В JavaScript, как бы я создать массив чисел от 0 до 7, где индекс х равен 7? - PullRequest
0 голосов
/ 06 декабря 2011

Мне нужен фрагмент кода, который в основном позволяет мне указать длину массива (y) и самую высокую точку индекса (x), и возвращает массив, где индекс x равен y.

Например: у = 7 х = 3

0, 1, 7, 2, 3, 4, 5, 6

В конечном итоге это создает список чисел от 0 до 7, а затем переставляет эти числа так, чтобы наибольшее число было третьим в списке.

Ответы [ 4 ]

1 голос
/ 06 декабря 2011
var y = 7,
    x = 3,
    arr = [];

for (var i = 0; i < y + 1; i++) {
    arr[i] = i;
}

arr.splice(x - 1, 0, arr.pop()); 

arr; // 0,1,7,2,3,4,5,6

jsFiddle .

0 голосов
/ 06 декабря 2011

Мне нужен фрагмент кода, который в основном позволяет мне указать длину массива (y) и самую высокую точку индекса (x), и возвращает массив, где индекс x равен y.

Длина массива не y, это y + 1, если вы хотите, чтобы первый элемент имел значение 0. Обратите внимание также, что индексы массива JavaScript основаны на 0, поэтому третья позиция массива имеет индекс 2, или х-1.

Следующее соответствует вашему примеру ввода / вывода 7,3 => 0,1,7,2,3,4,5,6

function makeStrangeArray(y, x) {
   var a = [],
       i;
   for(i = 0; i < y; i++) {
      if(i===x-1)
         a.push(y);
      a.push(i);
   }
   return a;
}

alert(makeStrangeArray(7,3)); // 0,1,7,2,3,4,5,6
0 голосов
/ 06 декабря 2011

Вот еще один (и понятный, хотя и немного более длинный, чем ответы других):

var x = 3,
    y = 7;
    arr = [];
for(var i=0;i<y+1;i++){
    if(i == x - 1){
        arr[i] = y;  
    } else if(i >= x){
        arr[i] = i - 1;   
    } else {
        arr[i] = i;   
    }
}

Пример .

Во время for loop, когда i равно x - 1 (Javascript имеет индексирование на основе 0), оно установит arr[i] равным y. Если i больше или равно x, он установит arr[i] в i - 1 (поэтому мы вычитаем 1 из каждого значения массива после того, которое мы установили в y). Последний else охватывает значения массива, прежде чем мы усложним задачу (поэтому 0 и 1).

0 голосов
/ 06 декабря 2011

Вы можете легко создать массив, используя синтаксис []:

[] // An empty array

Вы можете добавлять элементы в массив, используя push:

myArray.push(someValue);

Итак, как вы можете создатьмассив от 0 до y, используя цикл for?Если вы не можете понять это, наведите курсор мыши на нижний прямоугольник:

Хорошо, у вас есть свой массив, теперь все, что вам нужно сделать, это переместить последний элемент в x-ю позицию.Вы можете сделать это, используя очень универсальный Array.splice, ознакомьтесь с документацией.

Теперь проверьте свой ответ:

arr - теперь результат, который вам нужен.

jsFiddle .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...