javascript - 如何从对象中删除“未定义”值
问题描述
我有一个像这样的对象
const obj = {a: 123, b: 'text', c: [1,2,3]}
我将它用于路由参数,但c
可以是一个空数组,我不必处理 a 和 b 因为它们肯定会有价值。我必须手动省略c
fromobj
吗?只做{a: 123, b: 'text'}
?
如果值未定义,有什么方法我不必手动从对象中省略属性?
解决方案
如果你正在使用lodash
,你可以使用omitBy
_.omitBy({a: 123, b: 'text', c: undefined}, _.isUndefined)
此外,您可以通过链组合许多条件
_({a:123,b:'text',c:undefined,d:null})
.omitBy(_.isUndefined)
.omitBy(_.isNull).value();
或者
您可以引入一个函数来帮助您省略每个对象的未定义值
const obj = {a: 123, b: 'text', c: undefined};
const omitObj = obj => Object.keys(obj).reduce((acc, key) => {
if (obj[key] === undefined) {
return acc;
}
acc[key] = obj[key];
return acc;
}, {})
const newObj = omitObj(obj);
console.log(newObj);
推荐阅读
- mysql - 无线与有线连接到 MySQL
- php - 为什么数组响应没有使用 PHP MySQL API 进入 JSON
- sql - 以天:小时:分钟:秒格式计算时差
- java - 为地图标记创建 onClickListener 时出错
- api - 如何本地存储来自外部 API 服务的 GET 请求?
- angular - firebase 数据库删除特定数据不是所有数据
- snakemake - Snakemake 管道运行规则 1 的一个实例以生成多个文件,然后每个文件运行一个规则 2 实例
- sql - 显示以每个字符串的第一个字母开头的所有值,由任何分隔符分隔
- php - 如何根据特定的列值将多个值组合为一个?
- java - 返回通用结果
>