gpt4 book ai didi

javascript - 为什么 omit() 不在映射后删除未定义的值?

转载 作者:行者123 更新时间:2023-11-30 11:59:49 26 4
gpt4 key购买 nike

我正在使用以下 Lodash 链接实用程序来映射/扁平化和排列并生成一个新的,同时排除未定义的值。

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

这是结果:

enter image description here

如您所见,仍包含未定义的值。这是为什么?

编辑:

resp.data 看起来像这样

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

编辑2:

那些 undefined 值可能是空的 building 对象所拥有的。

最佳答案

额外的 undefined 值应该属于 resp.data 中的 user,其中不存在 building。您所要做的就是 _.filter()_ 之后通过 _.identity() 所有 undefined 的值.flatMap().

注意:使用 _.omit 应该只针对对象使用,在数组的上下文中使用它(例如 _.flatMap() 会产生一个数组) 将产生一个对象的结果,其中每个项目的索引是它在数组中的索引。您应该改用 _.filter()

var data = [
{ username: 'user1', building: [ { name: 'building1' } ] },
{ username: 'user2', building: [ { name: 'building2' } ] },
{ username: 'user3' }
];

var result = _(data)
.flatMap('building')
.filter(_.identity)
.value();

document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.11.2/lodash.js"></script>

关于javascript - 为什么 omit() 不在映射后删除未定义的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36928555/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com