Длинна массива без 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, время: 10:15. |