2015-11-24 2 views
3

У меня есть массив объектов, и когда я stringfy это выглядит как один из приведенных выше, как я могу удалить пустой {} из моего массиваКак удалить пустой объект из массива в JS

"[[{"entrReqInv","Neither"},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]]" 

Когда Я stringfy это Я хочу только значения в 0,1 Как его удалить?

+3

'{ "entrReqInv", "Ни"}' не действует Javascript. – jfriend00

ответ

10
var newArray = array.filter(value => Object.keys(value).length !== 0); 
+0

Это код ES6/2015? – webdeb

+0

Что это! Функции стрелок делают методы массивов намного приятнее для чтения imo. – djfdev

+0

Согласен, но вы должны навести на него подсказку и добавить пример es5, потому что он может не работать повсюду. – webdeb

5

Вы можете использовать Array.prototype.filter, чтобы удалить пустые объекты перед строкой.

JSON.stringify(array.filter(function(el) { 
    // keep element if it's not an object, or if it's a non-empty object 
    return typeof el != "object" || Array.isArray(el) || Object.keys(el).length > 0; 
}); 
+0

Это также отфильтровывает пустые массивы. –

+0

@ Roamer-1888 Есть ли способ отличить массивы от других объектов? Во всяком случае, он говорит, что у него есть множество объектов, и это может быть неважно. – Barmar

+0

Действительно, мы не знаем, имеет ли это значение или нет. Если это так, добавьте в фильтр 'Array.isArray (el)'. –

-1

Вот что я хотел бы сделать, по причине улучшения прогрессивной:

var aryAry = [[{prop: 'value'},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}]]; 
var a = aryAry[0], r = []; 
for(var i=0,l=a.length; i<l; i++){ 
    var n = 0, o = a[i]; 
    for(var q in o){ 
    n++; 
    } 
    if(n > 0){ 
    r.push(o); 
    } 
} 
console.log(r); 
+0

Ваши аргументы '' splice() 'неправильны, это должно быть' (i, 1) '. Но это также пропустит элемент после того, как вы сплайсируете, потому что этот элемент станет 'i'. – Barmar

+1

Также неясно, что он хочет изменить сам массив, просто не включайте пустые элементы при стягивании. – Barmar

+0

Спасибо, что указали это. – PHPglue

Смежные вопросы