Как я могу заказать элементы в массиве? - PullRequest
1 голос
/ 27 сентября 2019

Итак, я пытаюсь создать функцию, которая берет первый элемент в массиве и добавляет a1 к его концу вместе со следующим элементом массива.Затем к 3-му предмету добавляется a2, наряду с четвертым, и так далее.Также я хочу сделать это несколько раз и создать несколько массивов с параметром функции orderNum.Я с трудом пытаюсь выяснить, как это сделать, но я предполагаю, что это как-то связано с последовательностью 1 -1 1 -1.В любом случае, вот мой код:

function orderArray (orderNum, array) {
   var orderNum_Array = [];

   for (var i = 0; i <= array.length; i++) {
      if (Math.pow(-1, i +1) < 0) {
         array[i] = orderNum_Array [i];

         orderNum_Array[i] = orderNum_Array[i].toString();

         orderNum_Array.concat("a" + i);
      }else if (Math.pow(-1, i +1) > 0) {
         array[i] = orderNum_Array [i + 2];

         orderNum_Array[i + 2] = orderNum_Array[i + 2].toString();

         orderNum_Array.concat("a" + (i + 2));
      }
   }
}

Любая и вся помощь всем будет принята с благодарностью.Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 27 сентября 2019

Не ясно, какова цель orderNum, но что касается добавления a1, a2 к парам индексов, вы можете сделать это кратким, используя Math.ceil:

function orderArray(array) {
  return array.map((n, i) => `${n}a${Math.ceil((i + 1) / 2)}`)
}

console.log(orderArray([1, 2, 3, 4, 5, 6, 7]));
1 голос
/ 27 сентября 2019

Ваш код не работает, потому что вы превышаете границы массива, что, скорее всего, вызвано orderNum_Array[i + 2].

Но вы можете использовать Array.map () , чтобы сделать это вболее простой способ.

function orderArray(array) {
   var num = 0;
   var orderNum_Array = array.map((item, index) => {
     if (index % 2 == 0) {
       num++;
     }
     return item + "a" + num;
   });
   
   return orderNum_Array;
}

console.log(orderArray([1,2,3,4,5,6]));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...