我需要获得的模块,与那些张贴的地方等于“维也纳”,我无法消除那些没有通过验证。
这是JSON。
const json = [
{
"title":"Module A",
"postings":[
{"name": "1", "categories":{"location":"Viena"},},
{"name": "2", "categories":{"location":"Paris"},},
{"name": "3", "categories":{"location":"Viena"},},
]
},
{
"title":"Module B",
"postings":[
{"name": "1", "categories":{"location":"Madrid"},},
{"name": "3", "categories":{"location":"Paris"},},
]
},
{
"title":"Module C",
"postings":[
{"name": "1", "categories":{"location":"Madrid"},},
{"name": "2", "categories":{"location":"Viena"},},
]
},
];
预期结果
[
{
"title":"Module A",
"postings":[
{"name": "1", "categories":{"location":"Viena"},},
{"name": "3", "categories":{"location":"Viena"},},
]
},
{
"title":"Module C",
"postings":[
{"name": "2", "categories":{"location":"Viena"},},
]
},
];
这就是我正在尝试的
const result = json
.filter(module => module.postings
.filter(posting => posting.categories.location === 'Viena').length);
实际结果
我无法删除那些不符合条件的帖子。
我用reduce
函数找到了一个快速的解决方案。
json.reduce((acc, curr) => {
curr.postings = curr.postings.filter(e => e.categories.location == "Viena")
if(curr.postings.length > 0)
acc.push(curr);
return acc;
}, []);
如果您想了解有关该函数更多信息,可以在以下站点找到:https://developer.mozilla.org/de/docs/web/javascript/reference/global_objects/array/reduce
filter
需要返回一个真实的值-因此您应该在其中使用某些
而不是另一个filter
null
const json = [
{
"title":"Module A",
"postings":[
{"name": "1", "categories":{"location":"Viena"},},
{"name": "2", "categories":{"location":"Paris"},},
{"name": "3", "categories":{"location":"Viena"},},
]
},
{
"title":"Module B",
"postings":[
{"name": "1", "categories":{"location":"Madrid"},},
{"name": "3", "categories":{"location":"Paris"},},
]
},
{
"title":"Module C",
"postings":[
{"name": "1", "categories":{"location":"Madrid"},},
{"name": "2", "categories":{"location":"Viena"},},
]
},
];
var result = json.filter(x => x.postings.some(p => p.categories.location == "Viena"));
console.log(result);
我是Elasticsearch的新手,我试图创建一个过滤器来检索具有特定属性的文档。 属性在映射中定义为嵌套对象,如下所示: 我试图以以下形式执行一个复杂的查询: 这是elasticsearch 2.x。我做错了什么?
所以我使用redux和useSelector钩子从Store获取数据。 我可以在一个reducer数组中过滤特定的数据,这样组件只在过滤的数据发生变化时才更新,例如: 然而,当我尝试对一个对象进行相同的操作时,即使存储区没有改变,组件也总是重新呈现。例如: 为什么会发生这种情况,以及如何在数据发生变化时才进行更新?我假设将一些深入的比较函数传递给useSelector?
我试图通过一个对象,和一些属性,我有有限数量的值,他们可以分配给。下面是我目前检查它们价值的方法: 有没有办法对此进行优化?
我希望能够过滤评论,所以只有真正的评论将为每个博客对象显示。我想展示每一个博客,而不仅仅是那些有真实评论的博客。我在网上找到的所有其他解决方案似乎都影响了我的博客对象。有没有一种方法可以过滤掉评论对象而不影响所有博客的查询? 因此,上述示例将在查询之后返回: 该示例仍然显示了没有评论或错误评论的博客。 这可能吗? 我一直在使用这个示例中的嵌套查询:ElasticSearch-Get只匹配嵌套对象与
问题 你想要根据布尔条件来筛选数组。 解决方案 使用 Array.filter (ECMAScript 5): array = [1..10] array.filter (x) -> x > 5 # => [6,7,8,9,10] 在 EC5 之前的实现中,可以通过添加一个筛选函数扩展 Array 的原型,该函数接受一个回调并对自身进行过滤,将回调函数返回 true 的元素收集起来。 # 扩展 A
我如何过滤对象数组,以移除那些没有最大年龄值的对象。