gpt4 book ai didi

javascript - 如何从动态生成的 Json 对象中删除值

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

{
"1": {
"0": [
7606,
7615,
7596,
7513,
7514,
7597,
7605,
7607,
7608,
7595
],
"87": [
7514,
7605,
7644,
7607,
7608
]
},
"2": {
"0": [
7573,
7605,
7572,
7569
]
},
"3": { ....

}

我有以下演示 Json 数组。注意 - 12 内也可以有其他对象...

我需要删除包含给定数组[7605,7608,7615,7573]中匹配的任何值的数组元素的值。我需要从上面的 json 数组中删除所有这些值。

如何递归遍历以下数组并从对象的叶数组中删除所有这些值。

对于上述输入,输出应该是

{
"1": {
"0": [
7606,
7596,
7513,
7514,
7597,
7607,
7595
],
"87": [
7514,
7644,
7607
]
},
"2": {
"0": [
7568,
7572,
7569
]
}
}

我尝试使用 Object.keys,但我对 json 的动态性质感到困惑。

最佳答案

您正确地注意到 Object.keys() 对于实现此类动态对象的解决方案很有帮助,但这里有一个使用 Object 的可能的递归实现。 items() 改为:

function filterObject(o, v) {
return Object
.entries(o).map(([key, value]) => {
if (Array.isArray(value)) {
value = value.filter(n => !v.includes(n))
} else {
value = filterObject(value, v)
}

return [key, value]
})
.reduce((o, [key, value]) => {
return Object.assign(o, {
[key]: value
})
}, {})
}

console.log(filterObject({
"1": {
"0": [
7606,
7615,
7596,
7513,
7514,
7597,
7605,
7607,
7608,
7595
],
"87": [
7514,
7605,
7644,
7607,
7608
]
},
"2": {
"0": [
7573,
7605,
7572,
7569
]
}
}, [7605, 7608, 7615, 7573]))

MDN 的各种功能的填充:

关于javascript - 如何从动态生成的 Json 对象中删除值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46400607/

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