gpt4 book ai didi

javascript - 如何使用 lodash 或不使用 lodash 按特定值从嵌套 JSON 创建键数组?

转载 作者:行者123 更新时间:2023-11-28 14:31:28 27 4
gpt4 key购买 nike

我想创建值为“str”的键数组我有以下嵌套 json:

[
{
"Attr": [
{
"power": { "p1": "str", "t3": "str" },
"light": [
{"test": "str"},
{"test2": [ { "t4": "str" }]}
]
}
]
},
{
"Attr1": [
{
"power1": { "p2": "str", "t5": "str" },
"light1": [
{ "test3": "str" },
{ "test_x": [
{ "t_x": "str" },
{ "t_y": [
{ "t_y1": "str" }
]
}
]
}
]
}
]
}
]

我想创建键数组,其中键值为“str”,

我想要获得以下数组输出:

["p1", "t3", "test", "p2", "t5", "test3", "t_x", "t_y1"]

如何通过特定值从嵌套 JSON 创建键数组?

最佳答案

恕我直言,您可能正在寻找这样的东西:

var testArr = [{"Attr":[{"power":{"p1":"str","t3":"str"},"light":[{"test":"str"},{"test2":[{"t4":"str"}]}]}]},{"Attr1":[{"power1":{"p2":"str","t5":"str"},"light1":[{"test3":"str"},{"test_x":[{"t_x":"str"},{"t_y":[{"t_y1":"str"}]}]}]}]}];


var strFind = (arr, accumulator = []) => {
arr.forEach(obj => {
Object.entries(obj).forEach(([key, value]) => {
if (value === "str") accumulator.push(key);
if (Array.isArray(value)) strFind(value, accumulator);
if (key.includes("power")) {
Object.entries(value).forEach(([cKey, cValue]) => {
if (cValue === "str") accumulator.push(cKey);
})
}
});
})
return accumulator;
}

console.log(strFind(testArr));

关于javascript - 如何使用 lodash 或不使用 lodash 按特定值从嵌套 JSON 创建键数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51320643/

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