2014-10-04 2 views
1

У меня есть массив, содержащий число и строку, я хочу удалить всю строку из массива. Вот массив:Удалить строку из массива

var numbOnly = [1, 3, "a", 7]; 

В этом случае, я хочу, чтобы удалить a из numbOnly (результатаnumbOnly = [1, 3, 7]).

Спасибо.

+1

перебирать массив и проверить его DATATYPE с помощью 'typeof' – Praveen

+0

Я принимаю это вы имели в виду' «а» ',' не Ā'? Или '' 'переменная, содержащая строку? –

+0

Да, я имею в виду «а». –

ответ

2

Вы можете просто использовать это:

var numbOnly = [1, 3, "a", 7]; 
var newArr = numbOnly.filter(isFinite) // [1, 3, 7] 

Вышеприведенные работает очень хорошо, если у вас нет строки, как "1" в массиве. Чтобы преодолеть это, вы можете фильтровать массив так:

newArr = numbOnly.filter(function(x){ 
    return typeof x == "number"; 
}); 
+0

Я бы сделал '.filter (isFinite)'. 'Number' будет отфильтровывать нули. – elclanrs

+0

@elclanrs спасибо! –

3

Вы можете использовать Array.prototype.filter функцию наряду с Object.prototype.toString как этот

var array = [1, 3, 'a', 7]; 

var numbOnly = array.filter(function(currentItem) { 
    return Object.prototype.toString.call(currentItem).indexOf('Number')!==-1; 
}); 

console.log(numbOnly); 
# [ 1, 3, 7 ] 

В качестве альтернативы, вы можете использовать typeof для проверки типа, как этот

return typeof currentItem === 'number'; 

The filter функция сохранит текущий элемент в результирующий список, только если переданная ему функция возвращает true для текущего элемента. В этом случае мы проверяем, является ли тип текущего элемента числом или нет. Таким образом, filter сохранит только элементы, тип которых является числом, в результате.