Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   вопрос по методу pop() (https://javascript.ru/forum/misc/11385-vopros-po-metodu-pop.html)

Bogdan808 20.08.2010 19:13

вопрос по методу pop()
 
Тут у меня такая ситуация, я рассмотрел метод pop.
Как я понял он возвращает последнее значение массива и удаляет его.
По идее метод length должен нам вернуть количество элементов массива на единицу меньше. Но у мну усиленно выбивает на 2 больше исходного значения! Вопрос, чо за фигня?
<script type="text/javascript">
arr = ["go","stop","geemp"]
alert(arr.length)
arrt = arr.pop()
alert(arrt.length)
</script>

Sweet 20.08.2010 19:18

arrt - это строка. length у нее 5, потому что в "geemp" 5 букв

Bogdan808 20.08.2010 19:21

то есть я получаю количество символов из строки, а как же мне получить количество оставшихся элементов массива?

Bogdan808 20.08.2010 19:25

хотя понял, нужно просто загнать все это добро в отдельную переменную,
таким вот образом
b = a.pop()
z = a.length
alert(z)

Спасибо

Sweet 20.08.2010 19:30

Цитата:

Сообщение от Bogdan808
а как же мне получить количество оставшихся элементов массива?

А проверить length самого массива религия не позволяет?
var arr = ["go","stop","geemp"]
var arrt = arr.pop()
alert(arr.length)

Bogdan808 20.08.2010 19:34

это не религия мешает, а дефицит знаний и опыта ))

Sweet 20.08.2010 19:38

К слову, в этом и смылс метода pop(), что он уменьшает длину массива. Почувствуй разницу:
var arr1 = ["go","stop","geemp"], arr2 = ["go","stop","geemp"]

delete arr1[arr1.length-1]
arr2.pop()

alert(arr1.length)
alert(arr2.length)

Bogdan808 20.08.2010 19:47

ну я уже понял где была моя ошибка, я не учел последовательность выполнения кода... думаю это типичная ошибка новичков.
Да разницу увидел, еще раз спасибо за бесценный опыт :)

Kolyaj 20.08.2010 22:59

http://alljs.ru/articles/array/manipulations.html

Bogdan808 21.08.2010 17:54

Цитата:

Сообщение от Kolyaj (Сообщение 68144)

Интересная статья, спасибо, почитал


Часовой пояс GMT +3, время: 11:22.