gpt4 book ai didi

javascript - lodash 在嵌套数组中查找属性不起作用

转载 作者:行者123 更新时间:2023-11-28 04:25:03 25 4
gpt4 key购买 nike

我有一个像这样的数组

sections: [
{
editing: false,
id: 1234,
rows: [
{
editing: false,
id: 3435,
columns: [
{
id: 1535,
elements: [
{
editing: true,
id: 4849
}
]
}
]
}
]
},
]

我试图找到任何具有属性编辑的对象是正确的。

以下代码有效,但仅适用于部分和行,但由于某种原因,它在元素数组中找不到该属性

这是js,使用lodash

return _(state.sections)
.thru(function(coll) {
return _.union(coll, _.map(coll, 'rows'));
})
.thru(function(coll2) {
return _.union(coll2, _.map(coll2, 'columns'));
})
.thru(function(coll3) {
return _.union(coll3, _.map(coll3, 'elements'));
})
.flatten()
.find({ editing: true });

最佳答案

在第一个thru之后,链的中间结果是一个由对象和数组组成的数组:

[
{ id: 1234, .... },
[ { id: 3435, ... } ]
]

要获得您想要的内容,请将 map 调用替换为 flatMap,然后在第一个 thru 后返回此内容:

[
{ id: 1234, .... },
{ id: 3435, ... }
]

由于如果对象没有元素,中间结果中将返回未定义,因此您需要使用compact 在执行查找之前删除这些:

return _(state.sections)
.thru(function(coll) {
return _.union(coll, _.flatMap(coll, 'rows'));
})
.thru(function(coll2) {
return _.union(coll2, _.flatMap(coll2, 'columns'));
})
.thru(function(coll3) {
return _.union(coll3, _.flatMap(coll3, 'elements'));
})
.compact()
.find({ editing: true });

关于javascript - lodash 在嵌套数组中查找属性不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45133842/

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