Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Помогите решить проблему с массивом (https://javascript.ru/forum/misc/60745-pomogite-reshit-problemu-s-massivom.html)

Bruha1991 17.01.2016 22:53

Помогите решить проблему с массивом
 
Здравствуйте! Есть задача удалить из массива, который содержит значения 2..99, 2*p, 3*p, 4*p и т.д., где p = 2 и p = 3. Вот код, что я написал
<script>
			var a = [];
			for(var i = 0; i < 98; i++){
				a[i] = (i + 2);
			}
			alert( a );
			begin = 2;
			index = (a.indexOf(begin) + 1);
			var p = 2;
			for(i = index; i < 98; i++){
				if((a[i] % (begin * p)) == 0){
					a[i] = '-';
					p++;
				}
			}
			alert(a);
			begin = 3;
			for(i = 2; i < 98; i++){
				if(a[i]=='-'){
					continue;
				}
				if((a[i] % (begin * p)) == 0){
					a[i] = '-';
					p++;
				}
			}
			alert(a);
		</script>

Работает только для p = 2 но не 3. Проблема скорее всего в синтаксисе, а не в логике. Я новичок. Помогите, всю голову сломал:help:

рони 17.01.2016 23:17

Bruha1991,
так?
<script>
var arr = [];
for (var i=2; i<100; i++)  {
  if(i%2 == 0 || i % 3 == 0) continue;
  arr.push(i)
};
document.write(arr)
</script>

Keramet 18.01.2016 00:42

рони,
а если массив изначально сформирован и надо именно удалить, а не формировать из нужных значений?

Keramet 18.01.2016 01:02

__

рони 18.01.2016 01:09

Keramet,
<script>
var arr = [];
for (var i=2; i<100; i++)  {
  if(i%2 == 0 || i % 3 == 0) continue;
  arr.push(i)
};
document.write(arr+"<br>")

for (var i = 2, arr = []; i < 99; i++) arr.push(i);

for (var i=arr.length-1, a; a = arr[i]; i--)  {if(a%2 == 0 || a % 3 == 0) arr.splice(i,1)}

document.write(arr)

</script>


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