使用 JS 从 json 中删除具有空值的键

科伦
{
  "top": [{
    "language": "English",
    "value": ""
  }, {
    "language": "German",
    "value": "hASTA"
  }],
  "bottom": [{
    "language": "English",
    "value": "jfgfjg"
  }, {
    "language": "German",
    "value": "fkjhf"
  }],
  "In": "12 am",
  "Out": "3 am",
  "Type": ""
}

大家好,我想删除具有空值的键,我尝试使用,filter但在 google 表格中显示错误。我只想将数据发送到具有值的 API。

在这种情况下,对于

语言:德语,该值为空,所以我会跳过发送top到 API。

要发送的json:

{
  "bottom": [{
    "language": "English",
    "value": "jfgfjg"
  }, {
    "language": "German",
    "value": "fkjhf"
  }],
  "In": "12 am",
  "Out": "3 am"
}

使用的代码:

apidata = userdata.filter(function(x) { return x !== "" }); 

你能指导我如何做到这一点吗?

奥利桑普斯

userdata.filter 不会过滤对象的键。


您可以使用 Array.reduce 创建新对象

const json = {
  "top": [{
    "language": "English",
    "value": ""
  }, {
    "language": "German",
    "value": "hASTA"
  }],
  "bottom": [{
    "language": "English",
    "value": "jfgfjg"
  }, {
    "language": "German",
    "value": "fkjhf"
  }],
  "In": "12 am",
  "Out": "3 am",
  "Type": ""
};

// returns true if it contains a falsy value
// this function is recursive
function checkFalsy(ptr) {
   // If we are dealing with an array
  if (ptr instanceof Array) {
    return ptr.some(x => checkFalsy(x));
  }
  
  // If we have a string
  if (typeof ptr === 'string') {
     return ptr.length === 0;
  }
  
  // If we have an object
  if (Object.keys(ptr).length) {
     return Object.keys(ptr).some(y => checkFalsy(ptr[y]));
  }
  
  // anything else
  return !!ptr;
}

const filteredJson = Object.keys(json).reduce((tmp, x) => {
  // If we are dealing with an array
  if (checkFalsy(json[x]) === false) {
    tmp[x] = json[x];
  }

  return tmp;
}, {});

console.log(filteredJson);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用 javascript / node js 从 json 结果中删除所有空花括号

在对象节点树中删除具有空值的JSON对象

Swift 3-使用具有空值的结构模型保存json

从 JS 对象中删除具有空值的对象属性

Flutter:如何在使用 json_serializable 創建具有空值的模型時應用 defaultValue?

在PySpark DataFrame中转换为JSON时不要丢弃具有空值的键

从具有空值的json字符串中提取键

如何使用 JSON.NET 将具有空值的 json 数组反序列化为不可为空的 int 列表?

如何使用FOR JSON PATH将具有键/值对的表查询到JSON对象中?

使用JSON和JQ中的特定键获取具有所有值的数组

JSON输出为键,具有空白值

ReactJS axios POST 请求将所有选项作为具有空值的单个 JSON 键发送

在mongodb中删除具有空数组值的键

如何使用knexjs更新json列中具有值的对象键?

如何使用 jq 访问具有不同命名键的对象中的 json 值

Postgres对具有空值的json的查询

使用springboot创建具有空属性的对象的Json到POJO

如何使用Node.js将JSON文件中的“空”值视为空

如何使用awk删除具有空字段的行?

使用 shell 脚本从 json 文件中删除键:值对

PostgreSQL:使用json对象从数组中删除键/值对

使用变量中的值作为访问节点 js 中的 json 的键

从JSON获取价值,JSON使用JavaScript在键名中具有空格

如何使用流从 HashSet 中过滤某些字段具有空值的对象?

使用 isna() 过滤数据框以过滤以下列中具有空值的行

如何使用节点JS更改在JSON中多次重复的特定键的值

使用具有空值的默认约束?

避免使用php显示具有空值的行

使用with子句消除具有空值的重复行