Javascript.RU

PHP-функция: count

Пермалинк: http://javascript.ru/php/count

Javascript:

function count( mixed_var, mode ) {	// Count elements in an array, or properties in an object
	// 
	// +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
	// +	  input by: _argos

	var key, cnt = 0;

	if( mode == 'COUNT_RECURSIVE' ) mode = 1;
	if( mode != 1 ) mode = 0;

	for (key in mixed_var){
		cnt++;
		if( mode==1 && mixed_var[key] && (mixed_var[key].constructor === Array || mixed_var[key].constructor === Object) ){
			cnt += count(mixed_var[key], 1);
		}
	}

	return cnt;
}

Примеры:

count([[0,0],[0,-4]], 'COUNT_RECURSIVE');
6

count({'one' : [1,2,3,4,5]}, 'COUNT_RECURSIVE');
6


Автор: Arm (не зарегистрирован), дата: 14 апреля, 2009 - 10:36
#permalink

и в каком месте это аналог пхп? по результату?


Автор: Arm (не зарегистрирован), дата: 14 апреля, 2009 - 10:44
#permalink
function count( mixed_var, mod ) {    // Count elements in an array, or properties in an object
    var key, cnt = 0;
 mode = 1;
    if( mod == 'NO_RECURSIVE' ) mode = 0;
 
    for (key in mixed_var){
        cnt++;
        if( mode && mixed_var[key] && (mixed_var[key].constructor === Array || mixed_var[key].constructor === Object) ){
            cnt += count(mixed_var[key], 1)-1;
        }
    }
 
    return cnt;
}

Автор: Гость (не зарегистрирован), дата: 12 июля, 2009 - 20:00
#permalink

Херня какает,в реале в массиве 2 значения а оно мне тычет 7!!!


Автор: Илья Кантор, дата: 13 июля, 2009 - 00:30
#permalink

Можно подробнее - пример в студию?


Автор: Гость (не зарегистрирован), дата: 7 сентября, 2009 - 14:29
#permalink

++cnt; — быстрее, не создаётся временной переменной для значения до инкремента.


Автор: Mr. Freeman (не зарегистрирован), дата: 7 мая, 2011 - 01:02
#permalink

а чем вам не нравится стандартное рещение my_array.length


Автор: StylUS (не зарегистрирован), дата: 5 июня, 2011 - 16:15
#permalink

>> а чем вам не нравится стандартное рещение my_array.length
тем, что оно работает совсем не так. как известно, возвращает последний ключ в массиве+1. Следовательно, работает только если ключ - число.
а если в качесиве ключа используется строка, то .length не возвращает ничего.

не знаю как тут работает ваш код, я решил задачу довольно банально:

function count(array)
	{
	var cnt=0;
	for (var i in array)
		{
		if (i)
			{
			cnt++
			}
		}
	return cnt
	}

Автор: uMk0 (не зарегистрирован), дата: 5 сентября, 2016 - 00:04
#permalink

function count(c){var a=0,b;for(b in c)b&&a++;return a}


Отправить комментарий

Приветствуются комментарии:
  • Полезные.
  • Дополняющие прочитанное.
  • Вопросы по прочитанному. Именно по прочитанному, чтобы ответ на него помог другим разобраться в предмете статьи. Другие вопросы могут быть удалены.
    Для остальных вопросов и обсуждений есть форум.
P.S. Лучшее "спасибо" - не комментарий, как все здорово, а рекомендация или ссылка на статью.
Содержание этого поля является приватным и не предназначено к показу.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Разрешены HTML-таги: <strike> <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <u> <i> <b> <pre> <img> <abbr> <blockquote> <h1> <h2> <h3> <h4> <h5> <p> <div> <span> <sub> <sup>
  • Строки и параграфы переносятся автоматически.
  • Текстовые смайлы будут заменены на графические.

Подробнее о форматировании

CAPTCHA
Антиспам
5 + 3 =
Введите результат. Например, для 1+3, введите 4.
 
Поиск по сайту
Реклама
Содержание

Учебник javascript

Основные элементы языка

Сундучок с инструментами

Интерфейсы

Все об AJAX

Оптимизация

Разное

Дерево всех статей

Последние комментарии
Последние темы на форуме
Forum