Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 04.02.2012, 00:10
Аватар для strengerst
Аспирант
Отправить личное сообщение для strengerst Посмотреть профиль Найти все сообщения от strengerst
 
Регистрация: 03.02.2012
Сообщений: 82

Работа с массивом
Это элементарно все навернека знают но просьба мне объяснить.
Массив обладает свойством length - который определяет длину массива, а вот как определить количество элементов в массиве. Ну к примеру:

var massive= new Array();
massive[1]="слово1";
massive[3]="слово2";
massive[5]="слово3";
var f=massive.length;

Так вот переменая f , будет равна значению 6; А как можно получить
количество элементов. В масиве их 3.
Ответить с цитированием
  #2 (permalink)  
Старый 04.02.2012, 00:14
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

var massive= new Array();
massive[1]="слово1";
massive[3]="слово2";
massive[5]="слово3";

for(var k in massive ) {
    if ( ~~k == k ) {
        alert( massive[ k ] );
    }
}
Ответить с цитированием
  #3 (permalink)  
Старый 04.02.2012, 00:21
Аватар для strengerst
Аспирант
Отправить личное сообщение для strengerst Посмотреть профиль Найти все сообщения от strengerst
 
Регистрация: 03.02.2012
Сообщений: 82

а вот разьеснить можешь, что делает
к
, перезаписываеться в массив за место всех ключей и к стати ~~ для чего они.
Ответить с цитированием
  #4 (permalink)  
Старый 04.02.2012, 00:35
Аватар для strengerst
Аспирант
Отправить личное сообщение для strengerst Посмотреть профиль Найти все сообщения от strengerst
 
Регистрация: 03.02.2012
Сообщений: 82

да и еще код мне просто выводит пошагово мои значения через ключ, а мне нужно получить переменную которая будет содержать сумму всех элементов массива. В данном коде к примеру
$l=3;
Ответить с цитированием
  #5 (permalink)  
Старый 04.02.2012, 00:35
Аватар для strengerst
Аспирант
Отправить личное сообщение для strengerst Посмотреть профиль Найти все сообщения от strengerst
 
Регистрация: 03.02.2012
Сообщений: 82

да и еще код мне просто выводит пошагово мои значения через ключ, а мне нужно получить переменную которая будет содержать сумму всех элементов массива. В данном коде к примеру $l=3
Ответить с цитированием
  #6 (permalink)  
Старый 04.02.2012, 00:44
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Ну а что вы хотели, вы создаете массив из шести элементов.. и при этом хотите получить только реальные, тоесть назначенные... И конечно же получить/подсчитать их можно только перебором.
var massive= new Array();
massive[1]="слово1";
massive[3]="слово2";
massive[5]="слово3";

var length = 0;
for(var k in massive ) {
    ~~k == k && ++length;
}
alert(length);
Ответить с цитированием
  #7 (permalink)  
Старый 04.02.2012, 01:20
Аватар для strengerst
Аспирант
Отправить личное сообщение для strengerst Посмотреть профиль Найти все сообщения от strengerst
 
Регистрация: 03.02.2012
Сообщений: 82

О спасибо начинаю понимать, простите за наглость а не найдете свободную минутку ражевать мне ваш цикл, в учебник написано:
Итерация по свойствам объекта. А вот я не совсем понял как работает ваш цикл, и для чего нужны ~~ , &&- Логическое "И"- Возвращает последний операнд, если все операнды верны. Если хоть один из операндов неверен, то возвратит первый неверный операнд.
Дальше немножко понятно тоже:
length
это обычная переменая которая перед циклом равнялось 0, а в цикле она каждый раз пребовляет по единицы сколько циклов столько и прибовлений блогадоря: + +так как это тоже самое что +1; А вот принцип работы
~~k == k
не могу понять.
Ответить с цитированием
  #8 (permalink)  
Старый 04.02.2012, 01:28
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

~ это битовая операция
alert( ~1 ); // меняет биты 0 на 1, а единицы на ноль

тоесть если смотреть в двоичной системе:
00000001 - в десятичной рано 1
после манипуляции через знак ~ будет:
11111110 - тоесть 254 или -1

в нашем случае строку переводим в число:
~~"1" == 1
Ответить с цитированием
  #9 (permalink)  
Старый 04.02.2012, 01:48
Аватар для strengerst
Аспирант
Отправить личное сообщение для strengerst Посмотреть профиль Найти все сообщения от strengerst
 
Регистрация: 03.02.2012
Сообщений: 82

ага понятно, не знал что так можно, а если воспользоваться методом
parseInt
ну вроде как:
var length = 0;
for(var k in massive ) {
    parseInt(k) == k && ++length;
}
alert(length);
Или не правильно.
Ответить с цитированием
  #10 (permalink)  
Старый 04.02.2012, 01:50
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

devote,
Сообщение от devote
~~k == k
, а как может быть иначе?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Программист JavaScript постоянная удалённая работа. moisha Работа 4 26.10.2011 19:52
java-программист, СПБ, зп от 20000 до 50000, работа в офисе embodiment_86 Работа 1 07.10.2011 10:31
Постоянная работа / Front-end / Москва kooper Работа 4 29.09.2011 22:06
Работа с cookie klubnichkaaa AJAX и COMET 1 26.09.2011 14:06
небольшая работа - интерфейс в ява скрипте :) int9 Работа 0 08.12.2008 22:51