Справочник javascript: shift
Форум |
Учебник | Node.JS скринкаст | Стандарт языка | Справочник |
Discord чат |
| Статьи | Тест знаний | Аналоги функций PHP |
Справочник javascript: shift
Форум |
Учебник | Node.JS скринкаст | Стандарт языка | Справочник |
Discord чат |
| Статьи | Тест знаний | Аналоги функций PHP |
Автор: Гость (не зарегистрирован), дата: 22 апреля, 2012 - 21:01
#permalinkЗамечу, что на больших массивах этот метод работает значительно более медленно чем pop(), так как сдвигает каждый элемент.
Автор: trikadin, дата: 18 октября, 2012 - 18:53
#permalinkНет. Сдвигается лишь указатель на нижний край двусторонней очереди, которой по факту является массив.
Автор: mkochkin (не зарегистрирован), дата: 26 июля, 2012 - 10:05
#permalinkОбратите внимание, что shift удаляет не первый хранящийся в массиве элемент, а элемент с индексом 0, даже если его там нет. Об этом сказано в статье, но для наглядности пример.
Автор: max3d (не зарегистрирован), дата: 1 августа, 2014 - 23:08
#permalinkневерно. удаляет и возвращает первый элемент массива. Затем сдвигает оставшиеся.
Автор: AllaIreland (не зарегистрирован), дата: 27 сентября, 2014 - 18:26
#permalinkmax3d прав, shift() удаляет и возвращает первый элемент массива, даже если это ячейка с индексом false (а не [0]), вот пример с подтверждением этого:
var a = [];
a[1]=1; a[2]=2; a[3]=3;//
alert (0 in a);//false, нет ячейки [0], просто не задали ее
alert (a[0]);//undefined
alert (a);//,1,2,3
var b = a.shift();//
alert ("shift() вернул "+b);//shift() вернул undefined
alert (0 in a);//true
alert (a[0]);//1
alert (a);//1,2,3
alert ("аналогично, если выбить элемент массива delete");//выбьем ячейку [0], хотя изначально она была
var a = [0, 1, 2, 3];
delete a[0];
alert (0 in a);//false, нет ячейки [0], ее удалили, но не сдвинули индексы
alert (a[0]);//undefined
alert (a);//,1,2,3
var b = a.shift();//
alert ("shift() вернул "+b);//shift() вернул undefined
alert (0 in a);//true
alert (a[0]);//1
alert (a);//1,2,3
Автор: metronomx (не зарегистрирован), дата: 12 августа, 2015 - 14:35
#permalinkНеправда. Именно элемент с индексом 0.
var a = []; a[1] = 1; a[2] = 2; a.shift()
вернет undefined
Автор: Alex Grand (не зарегистрирован), дата: 12 августа, 2015 - 21:29
#permalinkshift удаляет первый элемент, и он является всегда 0-м, в примере выше, посмотрите на длинну массива:
Особенность в том, что при использовании напрямую индекса, создаются очень много элементов со значением undefined (если они не существовали), с индексами до этого элемента.
Автор: 3dartmax, дата: 16 марта, 2018 - 03:26
#permalinkvar a = [5,4,3,2,1,2,3,1];
a[1]=6; a[2]=11; a[3]=7; a[4]=8; a[5]=9; a[6]=10;
var b = a.shift();
console.log(a, b);// (7) [6, 11, 7, 8, 9, 10, 1] 5
Объясните построчно почему такой ответ и при таком коде?
Автор: zlojsmile (не зарегистрирован), дата: 25 июля, 2018 - 14:59
#permalinkПотому что a[0] у вас в первой строке устанавливается 5, и во второй не меняется.
То есть, после преобразований второй строки массив будет иметь вид [5, 6, 11, 7, 8, 9, 10, 1]. Следовательно, shift() извлекает нулевой элемент, который равен 5.