javascript - 如何从 json 根属性中仅获取非数组值
问题描述
如何以编程方式仅从 Javascript 中的 JSON 对象的根中获取非数组值的键/值?
// sample input
{
name: "Jackie",
age: 26,
friends: [ "David", "Ashley" ],
pets: [ "Rover" ],
birthday: "May 3",
family: [
{
name: "Lily",
relationship: "Mother"
},
{
name: "Richard",
relationship: "Father"
}
]
}
// expected output
{
name: "Jackie",
age: 26,
birthday: "May 3"
}
解决方案
您对此有何看法:
Object.fromEntries(Object.entries(obj).filter( ([k,v]) => Object(v) !== v ))
此过期将过滤掉每个具有对象值的键。当然,您可以根据需要自定义此过滤器
Object.fromEntries(Object.entries(obj).filter( ([k,v]) => !Array.isArray(v) ))
或者可能像@bramer 建议的那样,但正在修改原始 obj
for ( let k in obj )
if ( Array.isArray(obj[k]) delete obj[k]
可以包装返回新的obj
function justPrimitive( obj, ret = {} )
for ( let k in obj )
if ( ! Array.isArray(obj[k]) ret[k] = obj[k]
return ret;
}
推荐阅读
- java - CAS Rest 协议在没有通用服务定义的情况下不起作用
- javascript - Firebase 实时数据库中的深度查询
- python - 错误(外部 IP):无效的 HTTP_HOST 标头“check.proxyradar.com”
- java - 在 Flutter 中构建 apk 后,应用程序崩溃 pubnub 订阅
- arrays - 如何通过onClick函数切换评论组件,反应js
- c++ - 使用未来的 C++ 从线程输出
- mysql - 有没有办法知道在特定日期和时间之后添加到 SQL 数据库中的记录数
- php - PHP脚本将mysql列复制到另一个表
- django - 有什么简单的方法可以在一行中获取所有输入吗?
- redux-saga - Redux saga - yield 不返回动作