Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.06.2012, 20:55
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

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

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


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

но не получается((
Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 06.06.2012, 21:07
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

Большое спасибо!
Ответить с цитированием
  #3 (permalink)  
Старый 06.06.2012, 21:26
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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 тоже.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #4 (permalink)  
Старый 06.06.2012, 21:49
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Maxmaxmахimus,
тебе не говорят указывать списком то где не будет работать, а просто можно написать, работает в ИЕ с версии 9 и в остальных браузерах. Не забывай о том что в эту тему заглянет потом еще сотню людей ищущие решения. И кому-то оно нужно будет не только для новых браузеров.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #5 (permalink)  
Старый 06.06.2012, 22:44
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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

Только не забывай, что у IE, как показывает практика, более платёжеспособная аудитория.
Ответить с цитированием
  #6 (permalink)  
Старый 06.06.2012, 22:55
Профессор
Отправить личное сообщение для bot87 Посмотреть профиль Найти все сообщения от bot87
 
Регистрация: 16.05.2011
Сообщений: 307

привет.Скажите этот код имеет право на жизнь?
<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>
__________________
Я только учусь.Ногами просьба не бить

Последний раз редактировалось bot87, 06.06.2012 в 22:59.
Ответить с цитированием
  #7 (permalink)  
Старый 07.06.2012, 00:40
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

Сообщение от Maxmaxmахimus
Труда в разработку должно быть вложено ровно 10% от труда разработки под нормальные браузеры. На практике же поддержка ишаков занимает примерно 40% от обычной разработки. То есть приходится пилить для нормальных браузеров, и версию для осла, при том эти 40% это исправление багов и допилы несовершенств. Если проект требует труда больше чем 10%, то я не буду поддерживать не актуальные браузеры а просто поставлю заглушку.
Ну вот ты даже элементарно не понял того о чем тебе Kolyaj, пытается втолковать. Речь не о том сколько ты тратишь на разработку времени, а речь о том сколько заработка ты теряешь от уже сделанного сайта, то-есть те для кого ты поставишь заглушку, потенциальные клиенты, и от твоей заглушки они будут просто уходить. Именно это тебе и пытается втолковать Kolyaj, о заработке уже действующего проекта.
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #8 (permalink)  
Старый 07.06.2012, 12:08
sinistral
Посмотреть профиль Найти все сообщения от melky
 
Регистрация: 28.03.2011
Сообщений: 5,418

Сообщение от Maxmaxmахimus
если только человек даун и не сможет установить браузер по ссылке, то он и заказ товара на моем сайте сделать не сможет
А если админ даун и запретил менять систему обычному пользователю?
(не хотел никого обидеть)
Ответить с цитированием
  #9 (permalink)  
Старый 07.06.2012, 13:00
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

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

Ну и лично у меня, например, IE не занимает 10% процентов времени. Хотя я начинал, когда IE7 ещё не было, я уже автоматически пишу так, чтобы в IE проблемы минимизировать.
Ответить с цитированием
  #10 (permalink)  
Старый 04.07.2013, 17:54
Профессор
Отправить личное сообщение для Dorian_bs Посмотреть профиль Найти все сообщения от Dorian_bs
 
Регистрация: 24.03.2011
Сообщений: 217

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

for (var i = 0; i < arr.length; i++) {
    if(arr[i] == 'test3') {
        arr.splice(i, 1);
    }
}
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определить из какого элемента массива была вызвана функция BorodinKO Общие вопросы Javascript 2 31.03.2012 12:20
Удаление элемента из HTML-списка Kostyk92 Элементы интерфейса 1 06.02.2012 22:00
Как поменять тег элемента, не меняя его ID, стили и т.п. ? Solovei95 Общие вопросы Javascript 1 14.08.2011 12:47
Массивы удаление элемента и вставка на его место другого mycoding Общие вопросы Javascript 1 19.04.2010 22:30
Удаление отдельного элемента с масива Suharik Общие вопросы Javascript 8 06.04.2010 17:11