Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Длинна массива без length и циклов (https://javascript.ru/forum/misc/56130-dlinna-massiva-bez-length-i-ciklov.html)

danies 31.05.2015 20:23

Длинна массива без length и циклов
 
Есть массив такого рода:
mass[4]=4
mass[9]=9

Нужно сосчитать кол-во его элементов. length тут вернет максимальный индекс+1. Можно без циклов вывести в данном случае 2?

Vlasenko Fedor 31.05.2015 21:43

как вариант
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

danies 31.05.2015 21:48

Точно, спасибо! Жаль, что нету встроенной функции типа count()

Endy 31.05.2015 23:01

var mass = [];
mass[4]=4;
mass[9]=9;
alert(Object.keys(mass).length)

nerv_ 31.05.2015 23:05

Endy, любопытно было, запостят ли (самый очевидный) этот вариант :)

Поначалу сам хотел это сделать, но когда пригляделся, что массив - это mass желание пропало)

Цитата:

Сообщение от danies
Длинна массива без length и циклов

на-фи-га?

Endy 31.05.2015 23:31

nerv_,
Цитата:

Сообщение от nerv_
любопытно было, запостят ли (самый очевидный) этот вариант

да знаю, я Кэп :yes:

Мне почему-то такой сначала вариант прилетел в голову :write:
var mass = [];
mass[4] = 4
mass[9] = 9
alert(mass.join(' ').trim().split(/\s+/).length)


Цитата:

Сообщение от nerv_
на-фи-га?

тот же вопрос и вообще не понятно для чего нужны эти пропуски в массиве,почему бы не работать с обычным объектом?

indeterm 01.06.2015 00:55

Poznakomlus,
Что то Вы перемудрили:). Достаточно
mass.join("").length

рони 01.06.2015 01:01

Цитата:

Сообщение от indeterm
Достаточно
mass.join("").length

вы проверьте сначала

var mass = [];
mass[4] = 4
mass[9] = 9
mass[8] = 9000
alert(mass.join("").length);

indeterm 01.06.2015 01:03

Цитата:

Сообщение от nerv_
самый очевидный

Это самый хреновый вариант, BTW
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 01.06.2015 01:05

рони,
Вам пожалуй, капитанская фуражка пришлась бы к лицу. Никто не предлагал? Вроде, грамотный спец, на первый взгляд, а такой тупняк постите.


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