[英]How to filter object with array inside?
I'm trying to filter everything inside 'items' with 'name': "", without losing structure and values of fieldLabel and placeholder.我正在尝试使用“名称”:“”过滤“项目”中的所有内容,而不会丢失 fieldLabel 和占位符的结构和值。 Below is my current object:
以下是我当前的对象:
result: {
"fieldLabel": "foo",
"placeholder": "foo",
"items": [
{
"name": "foobar"
},
"name": ""
},
{
"name": ""
}
]
}
I want the object to look like this after filtering:我希望对象在过滤后看起来像这样:
result: {
"fieldLabel": "foo",
"placeholder": "foo",
"items": [
{
"name": "foobar"
},
]
}
You can filter the nested items
array that have truthy name
properties.您可以过滤具有真实
name
属性的嵌套items
数组。
const result= { "fieldLabel": "foo", "placeholder": "foo", "items": [ { "name": "foobar" }, { "name": "" }, { "name": "" } ] }; result.items = result.items.filter(({ name }) => name); console.log(result);
If you need to do this using an immutable pattern then shallow copy the object and nested properties that you are updating.如果您需要使用不可变模式执行此操作,则浅复制您正在更新的对象和嵌套属性。
const result= { "fieldLabel": "foo", "placeholder": "foo", "items": [ { "name": "foobar" }, { "name": "" }, { "name": "" } ] }; const newresult = { ...result, items: result.items.filter(({ name }) => name) }; console.log(newresult); console.log(result === newresult); // false since new object
const results = {
"fieldLabel": "foo",
"placeholder": "foo",
"items": [
{
"name": "foobar"
},
{
"name": ""
},
{
"name": ""
}
]
}
const newObject = {
...results,
items: results.items.filter(item => item.name)
}
Something like this?像这样的东西?
Filter YOUROBJ.items
to keep all entries where property name has a value that is not null/undefined/false过滤
YOUROBJ.items
以保留属性名称的值不为 null/undefined/false 的所有条目
res.items = res.items.filter(e => e.name);
const obj = { "fieldLabel": "foo", "placeholder": "foo", "items": [ { "name": "foobar" }, { "name": "" }, { "name": "" } ] } const res = Object.assign({}, obj); // copy object to not mutate the original one res.items = res.items.filter(e => e.name); // filter array "items" to just keep items with property name console.log(res);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.