как мне найти средний индекс массива?

#javascript #html #arrays #indexing

Вопрос:

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

 const ulList = document.querySelector("ul");
                        const liElement = document.createElement("li");
                        liElement.innerHTML = `${globalArray[globalArray.length / 2 - 1].key} ${globalArray[globalArray.length / 2 - 1].manufacturer} ${globalArray[globalArray.length / 2 - 1].model}`
                        ulList.appendChild(liElement);
                        globalArray.splice(globalArray[globalArray.length / 2 - 1], 1);
 

Комментарии:

1. Вы можете попробовать получить длину массива и разделить ее на две, но это не гарантирует наличие значения в этом индексе. Видеть new Array(4)[2] // undefined

2. Ваша логика globalArray.length/2-1 в правильном направлении, но что произойдет, если globalArray.length-нечетное число (например, 5?)

3. Вы всегда можете округлить вниз, если длина нечетная?

4. Так что же было не так с кодом в вашем вопросе?

5. Если вы не ожидаете HTML , не используйте innerHTML , вы можете использовать innerText или textContent . По соображениям безопасности.

Ответ №1:

 function getArrayMidKey(myArray) {
  let midKeyIndex = Math.floor(myArray.length / 2)
  return midKeyIndex;
}
let snacks = array("Cake", "Soda", "Apples", "Doritos");
midSnack = snacks[getArrayMidKey(snacks));
// midSnack --> "Soda"
 

Это дает вам средний ключ любого заданного массива..

Если массив содержит 5 элементов, он даст вам номер элемента 2, если он содержит 6 или 7 элементов — он даст вам номер элемента 3 и так далее.

Ответ №2:

 Math.floor(globalArray.length / 2)


globalArray[Math.floor(globalArray.length / 2)]
 

Попробуй это