如何在Node.js中过滤出rulescore>0的JSON数据?
解决Node.js中过滤JSON规则数据的问题
嘿,这事儿超简单!我来给你一步步实现:咱们要处理你提供的JSON数据,只保留rules数组里rulescore > 0的规则项。
原始数据
先把你的原始JSON数据放出来,方便对照:
{ "https://www.google.com": { "sitescore": 99, "rules": [ { "rulename":"rule1","rulescore":0,"description":"rules1 descript"}, { "rulename":"rule2","rulescore":1,"description":"rules2 descript"}, { "rulename":"rule3","rulescore":0,"description":"rules3 descript"} ] } }
Node.js处理代码
下面是具体的处理代码,不管你的数据是JSON字符串还是已经解析好的JS对象,都能搞定:
// 如果你的数据是JSON字符串,先解析成JavaScript对象 const jsonString = `{ "https://www.google.com": { "sitescore": 99, "rules": [ { "rulename":"rule1","rulescore":0,"description":"rules1 descript"}, { "rulename":"rule2","rulescore":1,"description":"rules2 descript"}, { "rulename":"rule3","rulescore":0,"description":"rules3 descript"} ] } }`; // 解析JSON(如果已经是对象可以跳过这一步) const siteData = JSON.parse(jsonString); // 遍历所有站点(哪怕以后新增其他站点也能兼容) for (const siteUrl in siteData) { // 用filter方法筛选出rulescore大于0的规则,替换原数组 siteData[siteUrl].rules = siteData[siteUrl].rules.filter(rule => rule.rulescore > 0); } // 格式化输出处理后的结果 console.log(JSON.stringify(siteData, null, 2));
代码说明
- 要是你的数据本来就是JS对象,直接跳过
JSON.parse那一步就行。 for...in循环用来遍历所有站点,确保代码能处理多站点的情况。- 数组的
filter方法是核心,它会返回一个新数组,只包含满足rulescore > 0的规则项,我们用这个新数组替换原来的rules数组。 - 最后用
JSON.stringify格式化输出,让结果更易读。
处理后的结果
运行代码后,你会得到这样的最终数据:
{ "https://www.google.com": { "sitescore": 99, "rules": [ { "rulename": "rule2", "rulescore": 1, "description": "rules2 descript" } ] } }
内容的提问来源于stack exchange,提问作者Veda Vyas
相关产品推荐
相关产品推荐

