Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   как найти и удалить массив из массива? (https://javascript.ru/forum/misc/15792-kak-najjti-i-udalit-massiv-iz-massiva.html)

FRIE 13.03.2011 15:32

как найти и удалить массив из массива?
 
есть у меня кука в которую записываю данные и разделяю их ";"
например гадя,петрович,хренова;петр, василич,иванов;

и есть кнопка на каждую позицию чтобы удалить эту запись из куки
вот так :
onclick='MinusFromCookie("гадя","петрович","хренова");'


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

сложность возникает в том чтобы найти запись в массиве с такими параметрами и удалить из массива

вот код

function MinusFromCookie(var1,var2,var3) {
	var str = $.cookie("names");
	var arr = str.split(';'); 
}
как дальше найти индекс массива arr содержащим в себе запись с такими переменными var1,var2,var3 которые получил скрипт, и грохнуть этот индекс? и еще чтобы удалилось первое совпадение, потому как их может быть несколько

walik 13.03.2011 16:08

function minus(var1, var2, var3) {
	str = 'Петя;Дима;Вася;Кирил;Петя';
	new_arr = new Array();
	arr = str.split(';');
	for(i=0;i<arr.length;i++) {
		if (arr[i] == var1) {
			var1 = null;
			continue;
		} else if (arr[i] == var2) {
			var2 = null;
			continue;
		} else if (arr[i] == var3) {
			var3 = null;
			continue;
		} else {
			new_arr.push(arr[i]);
		}
	}
	alert(new_arr);
}

minus('Петя','Валик','Вася');

Sweet 13.03.2011 17:53

walik, не использовать var в функциях - это отстой. Как зеленые джинсы: может кому и нравятся, но их отстойность близка к объективной отстойности. Короче, нех гадить в такие почтенные объекты как window.
Во-вторых, else if - это тоже отстой. switch - норм, а else if - отстой.
А еще new Array() - это тоже отстой. Может кому и наглядно, а все же по меркам js - отстойная конструкция.
В общем, не нужно писать отстой:)

walik 13.03.2011 18:02

Sweet,
Человек попросил помочь, и я ему помог. Умеешь писать грамотней - так что тебе мешает написать здесь свой пример ?

yupee 13.03.2011 18:05

Цитата:

Сообщение от Sweet
А еще new Array() - это тоже отстой. Может кому и наглядно, а все же по меркам js - отстойная конструкция.

А как надо??

monolithed 13.03.2011 18:32

Цитата:

Сообщение от yupee
А как надо??

определить массив можно двумя нотациями, первую вы уже знаете, вторую можно прочесть здесь

Sweet 13.03.2011 18:36

walik, есть мнение, что это называется "медвежья услуга", потому что дурной пример дико заразительный. Мой пример? Пожалуйста:
function fn(string){
  return string.replace( [].slice.call(arguments, 1).join(',') + ';', '' );
};

var string = 'гадя,петрович,хренова;петр,василич,иванов;';
alert( fn(string, 'гадя', 'петрович', 'хренова') );
Цитата:

Сообщение от yupee
А как надо??

Я считаю, что достаточно писать [], а такие скрипты:
var array = new Array();
array[0] = 0;
array[1] = 1;
array[2] = 2;
считаю убогой версией
var array = [0, 1, 2];

FRIE 14.03.2011 14:24

Цитата:

Сообщение от Sweet (Сообщение 96372)
walik, есть мнение, что это называется "медвежья услуга", потому что дурной пример дико заразительный. Мой пример? Пожалуйста:
function fn(string){
  return string.replace( [].slice.call(arguments, 1).join(',') + ';', '' );
};

var string = 'гадя,петрович,хренова;петр,василич,иванов;';
alert( fn(string, 'гадя', 'петрович', 'хренова') );


респект тебе дружище! даже не думал что код может получиться таким коротким, работает супер!

yupee 14.03.2011 15:48

Цитата:

Сообщение от Sweet
Я считаю, что достаточно писать []

Спасибо!


Цитата:

Сообщение от monolithed
определить массив можно двумя нотациями, первую вы уже знаете, вторую можно прочесть здесь

Спасибо, но я знал как определяются массивы (хоть и посмотрел еще раз). Просто хотел узнать как предпочтительнее, так сказать по-профессиональному:)


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