gpt4 book ai didi

javascript - 如何在 JavaScript 中过滤 JSON 对象?

转载 作者:数据小太阳 更新时间:2023-10-29 05:40:18 24 4
gpt4 key购买 nike

我有以下 JSON 字符串:

{
"Alarm":{
"Hello":48,
"World":3,
"Orange":1
},
"Rapid":{
"Total":746084,
"Fake":20970,
"Cancel":9985,
"Word": 2343
},
"Flow":{
"Support":746084,
"About":0,
"Learn":0
}
}

然后我加载上面的字符串并将其转换为 json 对象:

jsonStr = '{"Alarm":{"Hello":48,"World":3,"Orange":1},"Rapid":{"Total":746084,"Fake":20970,"Cancel":9985},"Flow":{"Support":746084,"About":0,"Learn":0}}';
var jsonObj = JSON.parse(jsonStr);

现在,我如何通过键名过滤这个 json 对象?

例如,如果过滤器是“ange”,则过滤后的对象将是:

{
"Alarm":{
"Orange":1
}
}

如果过滤器是“flo”,过滤后的对象将变成:

{
"Flow":{
"Support":746084,
"About":0,
"Learn":0
}
}

如果过滤器是“wor”,结果将是:

{
"Alarm":{
"World": 3,
},
"Rapid":{
"Word": 2343
}
}

是否可以使用filter方法实现这种过滤?

最佳答案

除了给定的解决方案,您还可以使用递归方式来检查 key 。

该提案提供了在内部包含更多嵌套对象并仅获取过滤部分的机会。

function filterBy(val) {
function iter(o, r) {
return Object.keys(o).reduce(function (b, k) {
var temp = {};
if (k.toLowerCase().indexOf(val.toLowerCase()) !== -1) {
r[k] = o[k];
return true;
}
if (o[k] !== null && typeof o[k] === 'object' && iter(o[k], temp)) {
r[k] = temp;
return true;
}
return b;
}, false);
}

var result = {};
iter(obj, result);
return result;
}

var obj = { Alarm: { Hello: 48, "World": 3, Orange: 1 }, Rapid: { Total: 746084, Fake: 20970, Cancel: 9985, Word: 2343 }, Flow: { Support: 746084, About: 0, Learn: 0 }, test: { test1: { test2: { world: 42 } } } };

console.log(filterBy('ange'));
console.log(filterBy('flo'));
console.log(filterBy('wor'));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何在 JavaScript 中过滤 JSON 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39546088/

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