从复杂的输出中删除空的对象

时间:2019-04-26 15:41:18

标签: javascript

使用地图(几个地图在嵌套的json中获取必要的元素)功能,我试图根据所需模板从Neo4j数据库获取输出。在最后一张地图中,我正在构建所需输出的一部分,并将其存储在内部变量中:

 px.segments.map(function(pathSegment){                                                                                          
 individual_path.push({                          
 "start": pathSegment.start.properties.name,
 "weight": pathSegment.relationship.properties.Weight.low,
  "end": pathSegment.end.properties.name}); 
  })

然后,根据我在执行DB和Cypher查询时所拥有的内容,在某些情况下,我在执行时会得到:

 console.log(individual_path);

我得到类似的东西

 [ { start: 'title', weight: 39, end: 'metadata' } ]
 [ { start: 'title', weight: 39, end: 'metadata' } ]
 [ { start: 'title', weight: 39, end: 'metadata' } ]
 [ { start: 'title', weight: 39, end: 'metadata' },
   { start: 'metadata', weight: 39, end: 'filmID' } ]
 [ { start: 'title', weight: 39, end: 'metadata' },
   { start: 'metadata', weight: 39, end: 'filmID' } ]
 []
 [ { start: 'movieID', weight: 39, end: 'moviesSchema' } ]
 [ { start: 'movieID', weight: 39, end: 'moviesSchema' },
   { start: 'moviesSchema', weight: 39, end: 'title' } ]
 [ { start: 'movieID', weight: 39, end: 'moviesSchema' },
   { start: 'moviesSchema', weight: 39, end: 'title' },
   { start: 'title', weight: 39, end: 'metadata' } ]

我的目标是避免在输出内部出现空对象,因为我需要完全以以下形式使用它:(开始:,重量:,结束:)。最后,我需要输入类似的内容(无空):

 [ { start: 'title', weight: 39, end: 'metadata' } ]
 [ { start: 'title', weight: 39, end: 'metadata' } ]
 [ { start: 'title', weight: 39, end: 'metadata' } ]
 [ { start: 'title', weight: 39, end: 'metadata' },
   { start: 'metadata', weight: 39, end: 'filmID' } ]
 [ { start: 'title', weight: 39, end: 'metadata' },
   { start: 'metadata', weight: 39, end: 'filmID' } ]
 [ { start: 'movieID', weight: 39, end: 'moviesSchema' } ]
 [ { start: 'movieID', weight: 39, end: 'moviesSchema' },
   { start: 'moviesSchema', weight: 39, end: 'title' } ]
 [ { start: 'movieID', weight: 39, end: 'moviesSchema' },
   { start: 'moviesSchema', weight: 39, end: 'title' },
   { start: 'title', weight: 39, end: 'metadata' } ]

2 个答案:

答案 0 :(得分:1)

您可以通过检查对象是否不为空来过滤数组

let array = [{},{},{ start: 'title', weight: 39, end: 'metadata' },{ start: 'title', weight: 39, end: 'metadata' },{ start: 'title', weight: 39, end: 'metadata' },{ start: 'title', weight: 39, end: 'metadata' },{},{}];

array = array.filter(obj => Object.entries(obj).length !== 0 );
console.log(array);

但是在问题中,您有一个空数组[],我想将其删除,然后再删除。

if (individual_path.length){
    console.log(individual_path);
}

答案 1 :(得分:0)

忽略此答案-不正确 您可以在filter数组上使用individual_path

var newObject = individual_path.filter(item => item.length > 0);

这将获得所有非“空”的物品。 请注意,这要求individual_path是一个数组数组。