powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Удалить дыр из массива JS
25 сообщений из 42, страница 1 из 2
Удалить дыр из массива JS
    #34587327
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть массив:
var markersArray=[];

Элементы из этого массива удаляются так:
markersArray [n] = null;

В итоге массив может содержать элементы разные null, но это недопустимо.
Как избавиться от элементов равных null, так, что бы номера элементов массива шли по порядку?

Т.е. например:
Вот такой массив:
markersArray[0] = ‘val0’;
markersArray[1] = ‘val1’;
markersArray[2] = ‘val2’;
markersArray[3] = null;
markersArray[4] = ‘val4’;

Стал вот таким:
markersArray[0] = ‘val0’;
markersArray[1] = ‘val1’;
markersArray[2] = ‘val2’;
markersArray[3] = ‘val4’;
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587333
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В JavaScript любой массив является хэшем.
Есть еще конструкция
Код: plaintext
delete markersArray [n];
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587342
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрюхрюшкин.В JavaScript любой массив является хэшем.

Пожалуста объясните поподробнее, как это можно использовать для решения моей задачи
Хрюхрюшкин.
Есть еще конструкция
Код: plaintext
delete markersArray [n];

[/quot]
delete не уменьшает длинны массива.
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587360
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот так сделал:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function regulateArrayCleaning(array){
	var cleanArray = [];
	var j =  0 ;
	for (var i= 0 ; i<(array.length); i++) {
		if(array[i] == null){
			cleanArray[j] = array[i];
			j++;
		}
	}
	return cleanArray;
}
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587364
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И не работает :(
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587378
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_BBB
Пожалуста объясните поподробнее, как это можно использовать для решения моей задачи
//
delete не уменьшает длинны массива.
Я не знаю в чем заключается твоя задача. Сейчас ты хочешь, чтобы тебе закодировали придуманное тобой решение. Я же хотел натолкнуть тебя на использование другого решения.
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587384
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задачу я, как мне кажется, вполне конкретно описал


Вот так работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function regulateArrayCleaning(array){
	var cleanArray = [];
	var j =  0 ;
	for (var i= 0 ; i<(array.length); i++) {
		if(array[i] != null){
			cleanArray[j] = array[i];
			j++;
		}
	}
	return cleanArray;
}
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587398
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_BBBЗадачу я, как мне кажется, вполне конкретно описал


Вот так работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
function regulateArrayCleaning(array){
	var cleanArray = [];
	var j =  0 ;
	for (var i= 0 ; i<(array.length); i++) {
		if(array[i] != null){
			cleanArray[j] = array[i];
			j++;
		}
	}
	return cleanArray;
}

Это самый обычный bullshit. Продукт индусов и обезьянок. Не научишься писать эффективные приложения — придется идти в манагеры
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587400
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделай лучше
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587401
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И покажи решение здесь
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587409
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_BBBСделай лучше
Это задание на лабораторную что-ли? :)
А то я так и не увидел задачу, которую нужно решить данным способом.
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587435
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрюхрюшкин. Alex_BBBСделай лучше
Это задание на лабораторную что-ли? :)
А то я так и не увидел задачу, которую нужно решить данным способом.
Если ты не видишь - это не значит что её нет.

Я могу тебе объяснить:

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

В итоге, после заранее неизвестного числа операций по добавлению и удалению элементов, этот массив передается на сервер.

К передаваемому на сервер массиву существуют требования:
1.Все индексы элементов должны идти по порядку
2.Не должно быть пустых элементов массива.

Таким образом:
1 При удалении элемента массива нельзя использовать выражение:
Код: plaintext
delete myarray[n];
Так как в этом случаи длинна массива остается неизменной, а при обращении по ссылке
Код: plaintext
myarray[n]
,(после применнеия delete myarray[n];)
,результат будет undefined

2 Так же при удалении нельзя применить и
Код: plaintext
myarray.spice(n, 1 )
Так как в этом случаи перепутаются все индексы элементов массива.


Таким образом было решено сделать следующее:
При удалении элементов использовать
Код: plaintext
myarray [n]=null

А при добавлении элементов
Код: plaintext
1.
2.
3.
4.
for (var i= 0 ; i<( myarray.length); i++) {
	   	if(!myarray [i]){break;}
}
myarray [i]=marker;
myarray.numberInArray = i++;
(последние выражение выглядит несколько громоздко, но что бы объяснить тебе это могут уйти годы)

Однако этого оказалось мало, т.к. возможна ситуация при которой один из элементов массива будет удален, но добавление элемента может не последовать.
Т.е. получится, что для этого элемента значение будет null.

И вот по этому приходится перед отправкой массива единожды использовать функцию
Код: plaintext
myarray =regulateArrayCleaning(myarray);


А теперь, если ты смог меня понять, предложи свой вариант решения этой задачи. Иначе, ты просто крикливое фуфло.
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587442
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во всех твоих рассуждениях есть один интересный момент.
Кто это придумал? И зачем?
Alex_BBB
К передаваемому на сервер массиву существуют требования:
1.Все индексы элементов должны идти по порядку
2.Не должно быть пустых элементов массива.
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587443
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И еще момент. Каким образом ты отправляешь на сервер массив JavaScript?
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587453
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_BBB
И вот по этому приходится перед отправкой массива единожды использовать функцию
Код: plaintext
myarray =regulateArrayCleaning(myarray);

Если ты всё-равно перед отправкой используешь эту функцию, то зачем писать всё это?
Код: plaintext
1.
2.
3.
4.
5.
for (var i= 0 ; i<( myarray.length); i++) {
	   	if(!myarray [i]){break;}
}
myarray [i]=marker;
myarray.numberInArray = i++;

Я бы сделал проще:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
<html>
<head>
</head>
<body>
<script type="text/javascript">
var arr = [];

arr[arr.length++] = '1';
arr[arr.length++] = '2';
arr[arr.length++] = '3';
arr[arr.length++] = '4';
arr[arr.length++] = '5';

delete arr[ 3 ];

arr[arr.length++] = '6';


function printArray(myArray) {
 for (var item in myArray) {
  document.write('myArray[' + item + '] = ' + myArray[item] + '; ');
 }
}

function arrayClean(myArray) {
 var newArray = [];
 var idx =  0 ;
 for (var item in myArray) {
  newArray[idx++] = myArray[item];
 }
 return newArray;
}
document.write('ORIGINAL<br>');
printArray(arr);
document.write('<br>REARRANGED<br>');
printArray(arrayClean(arr));
</script>
</body>
</html>


А еще проще - вообще не чистить. Это проблемы сервера - валидировать входные данные.

Кто там фуфло? :)
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587463
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрюхрюшкин.Во всех твоих рассуждениях есть один интересный момент.
Кто это придумал? И зачем?
Alex_BBB
К передаваемому на сервер массиву существуют требования:
1.Все индексы элементов должны идти по порядку
2.Не должно быть пустых элементов массива.

Задача такая какая она есть.
Если я опять разжую тебе зачем это надо, ты опять что-нибудь спросишь, и так будет до бесконечности.
Просто прими эти условия.

Если ты не можешь себе представить область применения чего-либо это не значит что её нет. Я, например, не знаю дороги в Африку, однако это не означает, что её нет.

Ты прав только в одном, вопрос слишком простой, что бы публиковать его на форуме.
Хотя я не буду (как это делаешь ты) отрицать что возможно есть лучшее решение, и возможно кто-нибудь его озвучит.

Так, будет твой вариант или нет?
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587469
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_BBBТак, будет твой вариант или нет?
Я уже всё написал.
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587474
vasa_c
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авторЯ, например, не знаю дороги в Африку, однако это не означает, что её нет.
Да, она есть. Вернее есть бесконечное количество возможных маршрутов. Но только один из них кратчайший. Ты же спрашиваешь здесь: "как мне попасть в Африку, через Австралию?".

Даже если не углубляться в дебри, первое же решение на вскидку (не вспоминая, есть ли стандартные методы): создать пустой массив, перебрать исходный массив в цикле, добавляя ненулевые элементы в новый. Азы программирования. Как ты пытаешься делать что-то сложное, если стопоришься на элементарном?
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587480
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрюхрюшкин, не работает

vasa_c
Даже если не углубляться в дебри, первое же решение на вскидку (не вспоминая, есть ли стандартные методы): создать пустой массив, перебрать исходный массив в цикле, добавляя ненулевые элементы в новый.

Чем это отличается от моего решения?
vasa_cАзы программирования. Как ты пытаешься делать что-то сложное, если стопоришься на элементарном?
Я уже сказал, что возможно вопрос слишком простой для публикации на форуме. Однако возмоесть лучшие пути решения.
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587481
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasa_c
Даже если не углубляться в дебри, первое же решение на вскидку (не вспоминая, есть ли стандартные методы): создать пустой массив, перебрать исходный массив в цикле, добавляя ненулевые элементы в новый. Азы программирования. Как ты пытаешься делать что-то сложное, если стопоришься на элементарном?
Автор уже это написал. Только решение получилось громоздким, а самое главное — все его дополнительные телодвижения в процессе работы абсолютно бессмысленны, посколько данные всё-равно проходят финальную глажку утюгом.
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587484
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрюхрюшкин. vasa_c
Даже если не углубляться в дебри, первое же решение на вскидку (не вспоминая, есть ли стандартные методы): создать пустой массив, перебрать исходный массив в цикле, добавляя ненулевые элементы в новый. Азы программирования. Как ты пытаешься делать что-то сложное, если стопоришься на элементарном?
Автор уже это написал. Только решение получилось громоздким, а самое главное — все его дополнительные телодвижения в процессе работы абсолютно бессмысленны, посколько данные всё-равно проходят финальную глажку утюгом.
Нет не бессмысленны, так как этот массив используется, а не только передается на сервер.
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587485
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_BBBХрюхрюшкин, не работает
Что у тебя не работает? У меня — пример выполняется на IE 6, Firefox 2, Opera 9, IE 5.5.

Гарантированно работать не будет на IE 5.0, к примеру.
Где еще проверить?
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587486
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vasa_cКак ты пытаешься делать что-то сложное, если стопоришься на элементарном?
Не пытаюсь а делаю, а вот ты покажи свою работу? что ты такого сделал сложного?
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587487
Фотография Хрюхрюшкин.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alex_BBB
Нет не бессмысленны, так как этот массив используется, а не только передается на сервер.
Ну и работай с ним. В чем проблема? Я показал, как удалять и добавлять элементы. Это делается самым обыкновенным способом.
...
Рейтинг: 0 / 0
Удалить дыр из массива JS
    #34587494
Alex_BBB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хрюхрюшкин.
Ну и работай с ним. В чем проблема? Я показал, как удалять и добавлять элементы. Это делается самым обыкновенным способом.
Ты сначала развел всю эту байду, а потом показал решение которое не является ответом на вопрос.
...
Рейтинг: 0 / 0
25 сообщений из 42, страница 1 из 2
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Удалить дыр из массива JS
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]