Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Длина массива в объекте (https://javascript.ru/forum/misc/24496-dlina-massiva-v-obekte.html)

diagnost 03.01.2012 00:31

<html>
<script>

function Lingvo() {
	var Eng = [];
	var Rus = [];
//	this.count = 0;
	this.Eng = Eng;
	this.Rus = Rus;
	this.AddEng = function (EngWord) {
		Eng.push(EngWord);
//		this.count += 1;
	}
	this.AddRus = function (RusWord) {
		Rus.push(RusWord);
	}
	this.count = function() {
    return Eng.length;
};
}

var LWord = new Lingvo;
LWord.AddEng("father");
LWord.AddRus("папа");
LWord.AddEng("he");
LWord.AddRus("он");
LWord.AddEng("bread");
LWord.AddRus("хлеб");

alert (LWord.count);
</script>
</html>

zebra 03.01.2012 00:37

Читайте книги, count в данном коде это же метод

diagnost 03.01.2012 00:40

Это понятно - и про метод, и про полезность книг. Существует ли возможность получить LWord.count в качестве величины?

zebra 03.01.2012 00:45

1-й метод чем не устраивает?

diagnost 03.01.2012 00:50

Много слов в БД, не хотелось бы все время складывать. Хотя понятно, что на быстродействие это не сильно повлияет, но как-то некрасиво выглядит. Хочется элегантности.

рони 03.01.2012 01:00

Вариант ...
var Lingvo = function () {
        return {
            Eng: [],
            Rus: [],
            count: 0,
            AddEng: function (EngWord) {
                this.count = this.Eng.push(EngWord);

            },
            AddRus: function (RusWord) {
                this.Rus.push(RusWord);
            }
        }
    }

var LWord = Lingvo();
LWord.AddEng("father");
LWord.AddRus("папа");
LWord.AddEng("he");
LWord.AddRus("он");
LWord.AddEng("bread");
LWord.AddRus("хлеб");

alert (LWord.count);

diagnost 03.01.2012 01:06

Вариант элегантней исходного. Если это предел возможного, остановлюсь на этом, хотя все еще присутствует неоднократное вычисление count. Спасибо.

Livaanderiamarum 03.01.2012 09:19

Цитата:

Сообщение от diagnost (Сообщение 147772)
Вариант элегантней исходного. Если это предел возможного, остановлюсь на этом, хотя все еще присутствует неоднократное вычисление count. Спасибо.

твой лучше был

Aetae 03.01.2012 09:53

Вообще два отдельных массива для того что вы делаете явно очень плохо.
Стоит один раз ошибиться - и всё, писец пришёл.

diagnost 03.01.2012 11:29

Все дело в многомерных массивах. Объявить многомерный массив один раз, а потом добавлять в него элементы у меня не получилось, как я ни старался.

Если внимательно посмотреть на стандартный алгоритм заполнения двумерного массива, то можно увидеть, что new Array объявляется столько раз, сколько строк. Получается, например, что для десяти строк это будет десять массивов, а не два, как в моем случае. А если строк будет 1000?
Это сказывается на памяти и быстродействии.
Насчет борьбы с ошибками - есть смысл повторять подсчет count во втором массиве и контролировать нулевую разницу.


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