javascript - Object.keys.map 不返回原始键
问题描述
我正在从我的数据库中获取一个对象:示例:
{availability: null
bio: null
category: ""
createdAt: "2020-10-13T13:47:29.495Z"
email: "oznerol@prova.com"
firstName: "Lorenzo"
id: 37
image: null
job: null
lastName: "Del Rosario"
location: ""
password: "$2b$10$J6m71nc8gBXTvEENMwBjt.azNitCsna3LsxaDIUg.B0ztiTm5xFea"
phone: ""
skills: null
updatedAt: "2020-10-13T13:47:29.495Z"
website: ""}
我正在尝试映射此对象以将所有null
值更改为''
.
这是我的代码:
const [userData, setUserData] = useState()
useEffect( ()=>{
const fetchData = async () => {
const a = await getUserData(userId);//this retuns the object
const cleanUserData = Object.entries(a).map(([key, value]) =>
value === null || undefined ? value = '' : value
)
setUserData(cleanUserData);
};
fetchData();
},[])
但通过这种方式我改变了我的价值观,但我失去了我的钥匙,结果是这样一个对象:
{0:37
1:"oznerol@prova.com"
2:"$2b$10$J6m71nc8gBXTvEENMwBjt.azNitCsna3LsxaDIUg.B0ztiTm5xFea"
3:"Lorenzo"
4:"Del Rosario"
5:""
6:""
7:""
8:""
9:""
10:""
11:""
12
...}
解决方案
两者都Object.entries
返回Object.keys
一个数组,所以当你使用map
它时,结果将是一个数组。reduce
改为使用创建新对象,如下所示:
const cleanUserData = Object.entries(a).reduce((acc, [key, value]) => {
acc[key] = value == null ? '' : value;
return acc;
}, {});
注意:您的原始测试value === null || undefined
不正确,因为这不是您针对两个可能值进行测试的方式,它应该是value === null || value === undefined
. 与 javascript 一样,测试value == null
(使用 double-equal ==
)也足够undefined == null
了。
演示:
const a = {availability: null, bio: null, category: "", createdAt: "2020-10-13T13:47:29.495Z", email: "oznerol@prova.com", firstName: "Lorenzo", id: 37, image: null, job: null, lastName: "Del Rosario", location: "", password: "$2b$10$J6m71nc8gBXTvEENMwBjt.azNitCsna3LsxaDIUg.B0ztiTm5xFea", phone: "", skills: null, updatedAt: "2020-10-13T13:47:29.495Z", website: ""};
const cleanUserData = Object.entries(a).reduce((acc, [key, value]) => {
acc[key] = value == null ? '' : value;
return acc;
}, {});
console.log(cleanUserData);
推荐阅读
- javascript - 如何在 javascript 对象中使用构造函数以仅使用 `this` 中的属性?
- python - 在python中计算百分位数
- html - 使用 CSS 和 HTML 的垂直菜单问题
- reactjs - 点击时 Material UI 芯片组件的颜色变化不起作用
- c - 如何将单行按空格分割成两种不同的类型
- python - Python类在调用函数时没有属性
- javascript - 向 WP 主题添加新的导航菜单
- c# - 是否有关于使用 .Net 标准的 MvvmCross.Forms 和本地化的教程
- netlogo - 在 Netlogo 中画一个半圆
- c# - 如何访问下游对象中的 Logger 对象?