Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Удаление элемента массива по его названию (https://javascript.ru/forum/misc/28906-udalenie-ehlementa-massiva-po-ego-nazvaniyu.html)

Dorian_bs 06.06.2012 20:55

Удаление элемента массива по его названию
 
Добрый день!
Помогите разобраться, как можно удалить из массива элемент используя не его инденкс, а его название?

Пример
arr = ['test', 'test2', 'test3'];


Пробовал
arr = ['test', 'test2', 'test3'];
delete arr['test'];

но не получается((
Заранее спасибо!

Dorian_bs 06.06.2012 21:07

Большое спасибо!

devote 06.06.2012 21:26

Maxmaxmахimus,
ты если людям советуешь что-то с новыми возможностями, хотя бы указывай об этом. Сейчас человек прилепит это у себя а работать это будет только в новых браузерах. Я конечно понимаю что ты такой весь на пальцах, новые возможности и все такое. Но не все такие как ты, многим и старые браузеры тоже нужны.

Dorian_bs, я вас розачарую, его код будет работать только в новых браузерах. Про ИЕ7-8 можете забыть с его примером. Или добавить придется вот этот код:
if (!Array.prototype.indexOf) {  
    Array.prototype.indexOf = function (searchElement /*, fromIndex */ ) {  
        "use strict";  
        if (this == null) {  
            throw new TypeError();  
        }  
        var t = Object(this);  
        var len = t.length >>> 0;  
        if (len === 0) {  
            return -1;  
        }  
        var n = 0;  
        if (arguments.length > 0) {  
            n = Number(arguments[1]);  
            if (n != n) { // shortcut for verifying if it's NaN  
                n = 0;  
            } else if (n != 0 && n != Infinity && n != -Infinity) {  
                n = (n > 0 || -1) * Math.floor(Math.abs(n));  
            }  
        }  
        if (n >= len) {  
            return -1;  
        }  
        var k = n >= 0 ? n : Math.max(len - Math.abs(n), 0);  
        for (; k < len; k++) {  
            if (k in t && t[k] === searchElement) {  
                return k;  
            }  
        }  
        return -1;  
    }  
}
что бы работало и в ИЕ7-8 тоже.

devote 06.06.2012 21:49

Maxmaxmахimus,
тебе не говорят указывать списком то где не будет работать, а просто можно написать, работает в ИЕ с версии 9 и в остальных браузерах. Не забывай о том что в эту тему заглянет потом еще сотню людей ищущие решения. И кому-то оно нужно будет не только для новых браузеров.

Kolyaj 06.06.2012 22:44

Цитата:

Сообщение от Maxmaxmахimus
И где та грань где актуальные браузеры и где не актуальыне?

Грань очевидна. Если ты готов пожертвовать ~10% своего заработка (IE<9), то ты можешь не поддерживать. А кто-то не готов терять заработок из-за какого-то indexOf.

Только не забывай, что у IE, как показывает практика, более платёжеспособная аудитория.

bot87 06.06.2012 22:55

привет.Скажите этот код имеет право на жизнь?
<script>
arr = ['test', 'test2', 'test3','test4','test5','test6'];
function delet(name){
for(i=0;i<arr.length;i++){
if(arr[i]==name) {
	delete arr[i]	
var before=arr.slice(0,i)
var after=arr.slice(i+1)
arr=before.concat(after)
}
}	
}
delet('test2')	
delet('test5')
alert(arr)
</script>

devote 07.06.2012 00:40

Цитата:

Сообщение от Maxmaxmахimus
Труда в разработку должно быть вложено ровно 10% от труда разработки под нормальные браузеры. На практике же поддержка ишаков занимает примерно 40% от обычной разработки. То есть приходится пилить для нормальных браузеров, и версию для осла, при том эти 40% это исправление багов и допилы несовершенств. Если проект требует труда больше чем 10%, то я не буду поддерживать не актуальные браузеры а просто поставлю заглушку.

Ну вот ты даже элементарно не понял того о чем тебе Kolyaj, пытается втолковать. Речь не о том сколько ты тратишь на разработку времени, а речь о том сколько заработка ты теряешь от уже сделанного сайта, то-есть те для кого ты поставишь заглушку, потенциальные клиенты, и от твоей заглушки они будут просто уходить. Именно это тебе и пытается втолковать Kolyaj, о заработке уже действующего проекта.

melky 07.06.2012 12:08

Цитата:

Сообщение от Maxmaxmахimus
если только человек даун и не сможет установить браузер по ссылке, то он и заказ товара на моем сайте сделать не сможет

А если админ даун и запретил менять систему обычному пользователю?
(не хотел никого обидеть)

Kolyaj 07.06.2012 13:00

Цитата:

Сообщение от Maxmaxmахimus
Труда в разработку должно быть вложено ровно 10% от труда разработки под нормальные браузеры.

Некорректно сравнивать процент прибыли и процент разработки. Разработка производится один раз, а прибыль потом идёт постоянно. Ну это как кофейный автомат купить и поставить в людное место: первый год он только окупается, а потом начинает приносить прибыль.

Ну и лично у меня, например, IE не занимает 10% процентов времени. Хотя я начинал, когда IE7 ещё не было, я уже автоматически пишу так, чтобы в IE проблемы минимизировать.

Dorian_bs 04.07.2013 17:54

Можно так
arr = ['test1', 'test2', 'test3','test4','test5','test6'];

for (var i = 0; i < arr.length; i++) {
    if(arr[i] == 'test3') {
        arr.splice(i, 1);
    }
}


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