如何在JavaScript中获取JSON并删除chkey与list均为null的行
解决JavaScript删除JSON中指定null值行的问题
嗨,这个需求很常见,用JavaScript的数组方法就能轻松搞定,我给你一步步拆解怎么做:
第一步:先把JSON转成可操作的JS对象
首先得把你提供的JSON字符串转换成JavaScript对象(毕竟JSON本质是字符串,得转成对象才能操作):
const originalData = [{ "unit_id": "9", "CHGRAPHUpdatetime": { "time": "2018-03-15 00:00:00" }, "channelGraph": [ { "chkey": "ch1", "list": "1" }, { "chkey": null, "list": null } ] }];
第二步:用过滤方法清理目标数组
我们可以用map()遍历原数据,同时对channelGraph数组用filter()筛选,只保留不同时满足chkey和list为null的元素:
const processedData = originalData.map(item => ({ ...item, // 复制原对象的所有属性,保证其他数据不受影响 channelGraph: item.channelGraph.filter(ch => { // 排除掉chkey和list都为null的元素 return !(ch.chkey === null && ch.list === null); }) }));
简单解释下这段代码:
map():遍历原始数组里的每个对象,返回新的对象数组,这样不会修改原始数据,避免后续出问题。- 扩展运算符
...item:把原对象的所有属性都复制过来,我们只需要修改channelGraph这一部分就行。 filter():专门用来筛选数组元素,这里的条件就是“只要不是chkey和list同时为null的项,就保留”。
第三步:查看最终结果
如果需要把处理后的对象转回JSON字符串,用JSON.stringify()就行:
console.log(JSON.stringify(processedData, null, 2));
输出的结果就是你想要的:
[ { "unit_id": "9", "CHGRAPHUpdatetime": { "time": "2018-03-15 00:00:00" }, "channelGraph": [ { "chkey": "ch1", "list": "1" } ] } ]
这种方法简洁还安全,完全满足你的需求~
内容的提问来源于stack exchange,提问作者Priya
相关产品推荐
相关产品推荐

