Javascript 为什么不是';t omit()是否在映射后删除未定义的值?

Javascript 为什么不是';t omit()是否在映射后删除未定义的值?,javascript,lodash,Javascript,Lodash,我使用以下Lodash链接实用程序映射/展开和数组,并生成一个新的,同时排除未定义的值 const array = _(resp.data) .omit(_.isUndefined) .flatMap('building') .value() console.log(array) 这就是结果: 正如您所看到的,未定义的值仍被包括在内。为什么会这样 编辑: 响应数据如下所示 [ { username: '', building: [ name: '' ] } { us

我使用以下Lodash链接实用程序映射/展开和数组,并生成一个新的,同时排除未定义的值

const array = _(resp.data)
   .omit(_.isUndefined)
   .flatMap('building')
   .value()
console.log(array)
这就是结果:

正如您所看到的,未定义的值仍被包括在内。为什么会这样

编辑:

响应数据如下所示

[
  { username: '', building: [ name: '' ] }
  { username: '', building: [ name: '' ] }
  // etc...
]
EDIT2:

那些
未定义的
值可能是对象拥有的空
建筑

试试这个

const array = _(resp.data)
.omit(_.isUndefined)
.flatMap('building')
.map()
.omit(_.isUndefined)
.value()

额外的
未定义
值应属于
相应数据
中的
用户
,其中不存在
建筑
。您所要做的就是通过
.identity()
.flatMap()
之后执行
.filter()
所有
未定义的值

注意:使用
\.ommit
只能对对象使用,在数组上下文中使用此选项(例如,
\.flatMap()
生成数组)将生成一个对象的结果,其中每个项的索引是它在数组中的索引。您应该改为使用
\uu0.filter()

var数据=[
{username:'user1',building:[{name:'building1'}]},
{username:'user2',building:[{name:'building2'}]},
{用户名:'user3'}
];
var结果=(数据)
.flatMap(“建筑”)
.filter(u.identity)
.value();
document.write(“”+JSON.stringify(结果,0,4)+“”)

明智的做法是包含
响应数据。@JosephDeeamer我编辑了我的问题。在编辑之后,我得到了一些奇怪的东西:
对象{0:Object,1:Object,2:Object,3:Object,4:Object,5:Object,6:Object,7:Object,8:Object,9:undefined}
现在我已经改变了一些东西,试试看