给定一个JS对象
var obj = { a: { b: '1', c: '2' } }
Run Code Online (Sandbox Code Playgroud)
和一个字符串
"a.b"
Run Code Online (Sandbox Code Playgroud)
如何将字符串转换为点符号,以便我可以去
var val = obj.a.b
Run Code Online (Sandbox Code Playgroud)
如果字符串只是'a'我可以使用,'a'但这更复杂.我想有一些简单的方法,但它目前逃脱了.
如何将带点的键转换为 javascript 对象并保留它的值?
所以我从一个 API 得到了这种响应,我需要通过 key: value 来解析它。
{
"property": "personal_info.address.city",
"description": "Missing field"
},
{
"property": "personal_info.address.country",
"description": "Missing field"
},
Run Code Online (Sandbox Code Playgroud)
所以我实现了这个:
{
'personal_info.address.city': 'Missing field',
'personal_info.address.country': 'Missing field'
}
// by using this code (lodash)
_.mapValues(_.keyBy(obj, 'property'), function(o) {
return o.description;
})
Run Code Online (Sandbox Code Playgroud)
但是,我需要它是这样的:
{
personal_info: {
address: {
city: 'Missing field',
country: 'Missing field',
}
}
}
Run Code Online (Sandbox Code Playgroud)
我以某种方式在 stackoverflow 中搜索了如何将点符号字符串转换为对象: Convert string with dot notation to JSON
但我被卡住了,因为我正在更改密钥本身。
编辑:更改了测试城市和测试国家以反映描述字段(抱歉)