Удаление элемента массива по его названию
Добрый день!
Помогите разобраться, как можно удалить из массива элемент используя не его инденкс, а его название? Пример arr = ['test', 'test2', 'test3']; Пробовал arr = ['test', 'test2', 'test3']; delete arr['test']; но не получается(( Заранее спасибо! |
Большое спасибо!
|
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 тоже. |
Maxmaxmахimus,
тебе не говорят указывать списком то где не будет работать, а просто можно написать, работает в ИЕ с версии 9 и в остальных браузерах. Не забывай о том что в эту тему заглянет потом еще сотню людей ищущие решения. И кому-то оно нужно будет не только для новых браузеров. |
Цитата:
Только не забывай, что у IE, как показывает практика, более платёжеспособная аудитория. |
привет.Скажите этот код имеет право на жизнь?
<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> |
Цитата:
|
Цитата:
(не хотел никого обидеть) |
Цитата:
Ну и лично у меня, например, IE не занимает 10% процентов времени. Хотя я начинал, когда IE7 ещё не было, я уже автоматически пишу так, чтобы в IE проблемы минимизировать. |
Можно так
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. |