Вот ситуация: мне нужна возможность переупорядочить любой одномерный массив, чтобы новый массив начинался с центрального номера (если количество объектов нечетное) или центральных двух чисел (если количество объектов четное) и повторял низкий , затем увеличивайте до тех пор, пока не будут учтены все числа в исходном массиве.
Пример 1 - нечетное количество объектов: Исходный массив: [1,2,3,5,8,13,20] Новый массив: [5 , 3,8,2,13,1,20]
Пример 2 - четное количество объектов: Исходный массив: [1,2,3,4] Новый массив: [2,3,1,4 ]
Я пробовал это с a for l oop и могу заставить его работать гипотетически, но я не могу использовать a for l oop в качестве вычисляемого свойства в Vue. js.
Вот моя попытка, которая не работает:
gameInfo: {
cards: [1, 2, 3, 6, 8, 13, 21, 40, 1000],
}
reorderOddCards() {
ATTEMPT 1
const cardCount = this.gameInfo.cards.length;
const middleNumber = (cardCount / 2).toFixed(0);
const newCardOrder = this.gameInfo.cards.map(addToArray);
function addToArray(value, index) {
if (index < middleNumber) {
const newIndex = (((middleNumber - index) * 2) - 1);
newCardOrder.splice(newIndex, 1, value);
} else if (index === middleNumber) {
newCardOrder.splice(index, 1, value);
} else {
const newIndex = ((middleNumber - index) * 2);
newCardOrder.splice(newIndex, 1, value);
}
}
return newCardOrder;
},
Вот, казалось бы, лучший подход с функцией .sort, но я тоже не могу заставить ее работать.
Возможное решение