Скажем, у меня есть массив, который выглядит так:
var playlist = [
{artist:"Herbie Hancock", title:"Thrust"},
{artist:"Lalo Schifrin", title:"Shifting Gears"},
{artist:"Faze-O", title:"Riding High"}
];
Как я могу переместить элемент в другую позицию?
Я хочу переехать, например, {artist:"Lalo Schifrin", title:"Shifting Gears"}
до конца.
Я пробовал использовать сращивание, вот так:
var tmp = playlist.splice(2,1);
playlist.splice(2,0,tmp);
Но не работает.
javascript
arrays
sorting
Wurlitzer
источник
источник
Ответы:
Синтаксис
Array.splice
:Куда:
Это означает, что
splice()
его можно использовать для удаления элементов, добавления элементов или замены элементов в массиве, в зависимости от переданных вами аргументов.Обратите внимание, что он возвращает массив удаленных элементов.
Что-нибудь приятное и общее было бы:
Тогда просто используйте:
Диаграмма:
источник
Если вы знаете индексы, вы можете легко поменять местами элементы с помощью такой простой функции:
Индексы массива - это просто свойства объекта массива, поэтому вы можете поменять местами его значения.
источник
Вот неизменная версия для тех, кому интересно:
источник
Измените 2 на 1 в качестве первого параметра в вызове splice при удалении элемента:
источник
С ES6 вы можете сделать что-то вроде этого:
источник
Вы всегда можете использовать метод сортировки, если не знаете, где сейчас находится запись:
источник
return +(a.artist == "Lalo Schifrin")
РЕДАКТИРОВАТЬ: пожалуйста, проверьте ответ Энди поскольку его ответ пришел первым, и это исключительно расширение его
Я знаю, что это старый вопрос, но я думаю, что стоит включить
Array.prototype.sort()
.Вот пример из MDN со ссылкой
К счастью, это работает не только с числами:
Я заметил, что вы заказываете их по имени:
обратите внимание, что если вы хотите упорядочить их по фамилии, вам понадобится ключ для обоих
first_name
&last_name
либо использовать магию регулярных выражений, которую я не могу сделать XDНадеюсь, это поможет :)
источник
Попробуй это:
источник
Если вы хотите переместить только один элемент из произвольной позиции в конец массива, это должно сработать:
Если вы хотите переместить несколько элементов из произвольной позиции в конец, вы можете сделать:
Если вы хотите переместить несколько элементов из произвольной позиции в произвольную позицию, попробуйте:
источник
В качестве простого изменяемого решения вы можете вызвать splice дважды подряд:
С другой стороны, простое неизменяемое решение может использовать срез, поскольку этот метод возвращает копию раздела из исходного массива, не изменяя его:
источник
Изменить порядок работы таким образом
Я надеюсь это сработает
источник