Удаление элемента массива по его названию
Добрый день!
Помогите разобраться, как можно удалить из массива элемент используя не его инденкс, а его название? Пример 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, время: 02:22. |