Длинна массива без length и циклов
Есть массив такого рода:
mass[4]=4 mass[9]=9 Нужно сосчитать кол-во его элементов. length тут вернет максимальный индекс+1. Можно без циклов вывести в данном случае 2? |
как вариант
var mass = []; mass[4] = 4 mass[9] = 9 mass[8] = 9 alert(mass.join().split(/\d+/).length - 1); mass.join().replace(/\,{2,}/g, ',').replace(/^\,|\,$/,'').split(',').length |
Точно, спасибо! Жаль, что нету встроенной функции типа count()
|
var mass = []; mass[4]=4; mass[9]=9; alert(Object.keys(mass).length) |
Endy, любопытно было, запостят ли (самый очевидный) этот вариант :)
Поначалу сам хотел это сделать, но когда пригляделся, что массив - это mass желание пропало) Цитата:
|
nerv_,
Цитата:
Мне почему-то такой сначала вариант прилетел в голову :write: var mass = []; mass[4] = 4 mass[9] = 9 alert(mass.join(' ').trim().split(/\s+/).length) Цитата:
|
Poznakomlus,
Что то Вы перемудрили:). Достаточно mass.join("").length |
Цитата:
var mass = []; mass[4] = 4 mass[9] = 9 mass[8] = 9000 alert(mass.join("").length); |
Цитата:
var protomass = new Array protomass[1]=1 mass=[] mass.__proto__=protomass mass[4] = 4 mass[9] = 9 mass[8] = 9 console.log( mass.join().split(/\d+/).length - 1, Object.keys(mass).length, mass.join("").length ); //>>>> 4 3 4 |
рони,
Вам пожалуй, капитанская фуражка пришлась бы к лицу. Никто не предлагал? Вроде, грамотный спец, на первый взгляд, а такой тупняк постите. |
indeterm,
то есть по вашему это mass.join("").length не бред ??? |
рони,
Для данного случая нет. Особенно если учитывать, что сама тема бредовая |
indeterm,
Здраствуй троль |
рони,
Чисто для прикола, я по твоей тупой логике тоже потрясу яйцами var mass = []; mass[4] = 4 mass[9] = "9a9" mass[8] = 9 console.log(mass.join().split(/\d+/).length - 1); //>>>> 4 Нужны еще пояснения? Или успокоился? |
indeterm,
вы в строке 3 забыли буковку а убрать |
Цитата:
|
Вот так нагляднее будет :)
var arr = []; arr.test = function () {}; arr[4] = 4; arr[9] = 9; arr[5] = 'Text'; arr[8] = 9000; console.log( arr.join().split(/\d+/).length - 1, Object.keys(arr).length, arr.join("").length, arr.join().replace(/\,{2,}/g, ',').replace(/^\,|\,$/g,'').split(',').length ); alert(arr); |
Poznakomlus,
:lol: |
:write: через цикл всётаки проще
var protoarr = new Array, arr = [],a = 0; protoarr[1]=1 arr.__proto__= protoarr arr[4] = 4; arr[9] = 9; arr[8] = 9000; arr.forEach(function() { a++ }); alert(a) |
Цитата:
Object.keys если добавят метод :lol: |
Цитата:
Была аналогичная история. Ничтоже сумняще я писал в индекс массива время его создания, ну, просто нужен был уникальный ключ. А время в юниксе сами знаете какое. Ну и получались у меня таблицы в миллиард строк типа. ТС, отсюда вывод - юзайте вот такие скобки {} в соответствии с политикой и считайте ключи. |
Цитата:
JS не "слишком гибкий" а слишком дубовый. В Ъ-ООП языках вообще все есть объект, там можно сделать вот так. list(30, 40, 50) foreach(setSlot("foo", method(self println))) 1 to(100) foreach(?foo) #>>>> 30 #>>>> 40 #>>>> 50 То что ты называешь "настоящими языками" -- это суррогат для энтерпрайзного быдла, JS от этого жабаговна отличается хоть как-то, в правильную сторону, к счастью, корни идут из Self, потомка Смоллтока. |
Еще один долбоящер слаще морковки ничего не ехавший.
Запишите свой arr[100000]=1 в бинарный файл прежде получив правильное смещение по размеру структуры и прочитайте этот файл. Жду отчета. |
Как и все меня не колеб пластилин js пока не напоролся на тупой сук.
Екзель видели? Там столбцы и строки. В теории это двумерный массив. Блеать оказалось что и на практике - это настоящий двумерный массив. Не массив массивов сраный, а именно обычный двумерный. Так вот из js в екзель нельзя взять и записать двумерный массив, потому что он не массив и не двумерный. А из точно такого по смыслу VB - все как доктор прописал, потому что в VB для быдла - все именно так, как предки завещали. И оно, разумеется, создает жуткий геморрой на каждом шагу, в силу сугубо машинной логики и функционала. ООП для того и был придуман чтобы сделать ее ближе человеку, а скрипты - вообще не языки. |
Часовой пояс GMT +3, время: 09:05. |