2015-03-27 1 views
0

Я получил этот входКак удалить «целое» массив из объекта в JavaScript

var input=[ "Axel", 
       4, 
       4.21, 
       { name : 'Bob', age : 16 }, 
       { type : 'fish', model : 'golden fish' }, 
       [1,2,3], 
       "John", 
       { name : 'Peter', height: 1.90}   ]; 

и результат должен быть это один

[ { name : 'Bob', age : 16 }, 
     { type : 'fish', model : 'golden fish' },   
     { name : 'Peter', height: 1.90}   ]; 
+2

И где Аксель и Джон идут? – nicael

+2

Вы пытаетесь удалить все элементы, которые не являются объектом? – JasonWilczak

+0

Да, им пытаются получить только объекты – toretto24

ответ

2

Использование Array.prototype.filter, только держать объекты которые не являются Массивы

var input = ["Axel", 
    4, 
    4.21, 
    {name: 'Bob', age: 16}, 
    {type: 'fish', model: 'golden fish'}, 
    [1, 2, 3], 
    "John", 
    {name: 'Peter', height: 1.90} 
]; 

input = input.filter(function (e) { 
    return (typeof e === 'object') && !Array.isArray(e); 
}); /* 
[ 
    {"name": "Bob", "age": 16}, 
    {"type": "fish", "model": "golden fish"}, 
    {"name": "Peter", "height": 1.9} 
] 
*/ 
+0

отправил этот 49 секунд после вас :) Просто удалил мой и поддержал ваш = D – JasonWilczak

+1

не работает ... "TypeError: undefined не является функцией" – toretto24

+0

Какой браузер? Может быть, 'Array.isArray' не реализован в вашем браузере. –

0

Попробуйте использовать фильтр массива, чтобы удалить нежелательные элементы. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter

Чтобы удалить все целые

var filteredList = input.filter(function(val) { 
    return isNaN(val); 
}): 
/* 
filteredList is now = 
{ name: 'Bob', age: 16 }, 
{ type: 'fish', model: 'golden fish' }, 
[ 1, 2, 3 ], 
'John', 
{ name: 'Peter', height: 1.9 } ] 
*/ 
Смежные вопросы