【发布时间】:2020-10-30 18:56:49
【问题描述】:
假设我有一个嵌套对象数组。一种可能的示例场景是:
content: [
{
prop1: someValue,
prop2: someValue,
content: [
{
prop2: someValue,
prop3: someValue,
myProperty: myValue
},
{
prop1: someValue,
prop3: someValue,
myProperty: otherValue
}
]
},
{
prop5: someValue,
prop2: someValue
}
]
以下是可能性:
- 结构以
content[]开头,但后代可能有也可能没有content属性。 - 层次结构的级别可以是任意数字。
- 对象包含的属性并不总是相同,即一个对象可能具有 x、y、z 属性,而另一个对象可能具有 v、w、z 属性。
- 如果层次结构中的任何对象具有
myProperty键,则不会有content键。 - 层次结构中的多个对象可以有
myProperty,其值为'myValue。
我的要求:
- 如果对象在任何级别都具有属性
myProperty且值为myValue,则从层次结构中删除整个对象(不仅仅是属性)。
到目前为止我的尝试:
private removeObjects(content: any, values: string[]): any {
if (!content || content.length === 0) {
return
}
content = content.filter((c) => {
if (!c.myProperty) return true
return c.myProperty.indexOf(values) > 0
})
// Here is my problem since I am supposed to do a recursive call on each of child contents,
// how do I merge back the original array?
return this.removeObjects(content, values)
}
【问题讨论】:
标签: javascript arrays typescript object filter