2012-06-07 2 views

ответ

4
var newArray = []; 
var a=["a","b","c"]; 
for(var i=0;i<a.length;i++) 
    if(a[i]!=="a") newArray.push(a[i]); 
+2

Вы знаете, что есть '.splice'? –

+0

Да, я знаю. Но я считаю, что массив может иметь более одного «а» –

+0

. Я не думал об этом. Хорошая точка зрения. +1 –

6
remove = function(ary, elem) { 
    var i = ary.indexOf(elem); 
    if (i >= 0) ary.splice(i, 1); 
    return ary; 
} 

предоставил вашему целевому браузеру поддержку array.indexOf, в противном случае используйте запасной код на этой странице.

Если вам нужно удалить все одинаковые элементы, использовать filter как ракетное предложил:

removeAll = function(ary, elem) { 
    return ary.filter(function(e) { return e != elem }); 
} 
3

Если вы используете современный браузер, вы можете использовать .filter.

Array.prototype.remove = function(x){ 
    return this.filter(function(v){ 
     return v !== x; 
    }); 
}; 

var a = ["a","b","c"]; 
var b = a.remove('a'); 
0

Если вы хотите, не против дополнительной полезной нагрузки (около 4kb уменьшенных и сжат GZIP), вы можете использовать without function of the Underscore library: _.without

([ "а", "б", «c»], «a»);

Подчеркивание предоставит вам эту функцию + множество очень удобных функций.

1

я придумал простое решение, чтобы пропустить необходимый элемент из массива

<script> 
function myFunction() 
{ 
var fruits = ["One", "Two", "Three", "Four"]; 

<!-- To drop the element "Three"--> 
<!--splice(elementid, number_of_element_remove)--> 
fruits.splice(2,1); 

var x=document.getElementById("demo"); 
x.innerHTML=fruits; 
} 
</script> 
+0

это справедливо для Array и arraylist как –

0
let xx=['a','a','b','c']; // array 
let elementToRemove='a'; // element to remove 
xx =xx.filter((x)=> x!=elementToRemove) // xx will contain all element except 'a' 
Смежные вопросы