Создание функции, которая помещает число в середину массива - PullRequest
0 голосов
/ 16 апреля 2019

Я действительно новичок в JavaScript, и я боролся с этим кодом для теста, чтобы попасть в буткемпинг кодирования.Интересно, была ли у кого-нибудь помощь, которую они могли бы оказать?

function putInTheMiddle(array, item) {
  for (i = 0; i < 20; i++) {
    let Middle = Floor.Math(array / 2);
    array.slice(Middle, 0, item);
  }

  console.log putInTheMiddle([1, 3], 2);
  console.log putInTheMiddle([1, 2, 4, 5], 3);
}

Я бы хотел распечатать массивы как [1, 2, 3] и [1, 2, 3, 4, 5] соответственно.

Ответы [ 5 ]

1 голос
/ 16 апреля 2019

Попробуйте Math.floor вместо Floor.Math:

const putInTheMiddle = (array, item) => {
  let middleOfArray = Math.floor(array.length / 2);
  array.splice(middleOfArray, 0, item);
  return array;
}

console.log(putInTheMiddle([1, 3], 2));
console.log(putInTheMiddle([1, 2, 4, 5], 3));
1 голос
/ 16 апреля 2019

Используйте Math.floor с array.length - также, console.log - это функция, поэтому вызывайте ее в скобках ():

function putInTheMiddle(array, item) {
  array.splice(Math.floor(array.length / 2), 0, item);
  return array;
}

console.log(putInTheMiddle([1, 3], 2));
console.log(putInTheMiddle([1, 2, 4, 5], 3));
.as-console-wrapper { max-height: 100% !important; top: auto; }
1 голос
/ 16 апреля 2019

Вам не нужен цикл, который вставит число 20 раз.

Функция для получения минимального значения Math.floor(), а не Floor.Math().

Вам нужно разделить длину массива на 2, а не сам массив.

Функция изменяет массив на месте, но если вы хотите иметь возможность вызывать console.log() при вызове функции, ей также необходимо вернуть массив.

Вам нужно использовать метод splice() для вставки в массив. slice() просто извлекает часть массива без изменений.

Вам необходимо поместить круглые скобки вокруг аргумента в console.log(), и это должно быть вне определения функции.

function putInTheMiddle(array, item) {
  let Middle = Math.floor(array.length / 2)
  array.splice(Middle, 0, item);
  return array;
}

console.log(putInTheMiddle([1, 3], 2));
console.log(putInTheMiddle([1, 2, 4, 5], 3));
0 голосов
/ 16 апреля 2019

Так как вы новичок в javascript, я хотел бы ответить на это простыми методами.

//array is the array in which you want to insert.
//item is the value which you want to insert.
function putInMiddle(array, item){
 let index = Math.floor(array.length/2);
  //array.splice is a method which takes 3 arguments.
  //argument 1 is the index where you want to make change.
  //argument 2 is number of elements you want to remove starting from that index.
  //argument 3 is the element that you want to insert at that index.
  //In your case no element needs to be removed, hence argument 2 is 0.
 array.splice(index,0,item);
 return array; 
}

//Then you can call the function in console.log if you just want to print the value.
console.log(putInMiddle(['1','2','4','5'],'3'));
//This will print ['1','2','3','4','5']

Приведенный выше код отлично работает, если вы просто хотите добавить 1 элемент. Но что, если вы хотите добавить более одного элемента одновременно. Расслабься, я тебя за это прикрыл. Используйте следующее:

function putInMiddle(array, itemArr){
 let index  = Math.floor(array.length/2);
 let numItems = itemArr.length;
 for(let i=0; i<numItems; i++){
   array.splice(index,0,itemArr[i]);
   index++;
 }
 return array;
}

console.log(putInMiddle(['1','2','6','7'],['3','4','5']));
//This will print ['1','2','3','4','5','6','7']

Надеюсь, это поможет!

0 голосов
/ 16 апреля 2019

Для публикации ОП потребовалось несколько исправлений, которые отражает следующий код:

function putInTheMiddle(arr, item) {
  let m = Math.floor((arr.length / 2));
  arr.splice(m, 0, item);
  return arr;
}

let arr = putInTheMiddle([1, 3], 2);
console.log(`[` + arr.join() + `]`);

let arr2 = putInTheMiddle([1, 2, 4, 5], 3);
console.log(`[` + arr2.join() + `]`);

Пользовательская функция должна возвращать измененный массив в каждом случае, если console.log должен отображать ожидаемый результат. Обратите внимание, что Math - это объект, а floor - это метод, так же как console - это объект, а log - это метод. Методы требуют круглых скобок.

Чтобы определить средний индекс массива, вам нужно найти его длину, легко доступную, поскольку он является свойством массива. Разделив длину на два, вам нужно округлить результат до ближайшего целого числа, меньшего или равного его значению, и Math.floor () поможет в этом начинании.

Вместо использования метода среза в коде используется метод splice объекта Array, который идеально подходит для поставленной задачи.

Я согласен с @Barmar в том, что OP не нуждается в цикле for.

Наконец, я использую метод join () объекта Array, чтобы объединить элементы в строку для удобного отображения, которое не влияет на массив постоянно.

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