You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:13:53