将带有分隔键的对象转换为嵌套对象
Convert object with delimited key into nested object
我有一个带有分隔键的对象,我想将此对象转换为嵌套对象。有人知道在javascript或node中快速完成的方法吗?
例如:
{
'login': 'my login',
'work.title': 'my title',
'work.phone.mobile': '123',
'work.phone.work': '456'
}
转换为
{
login: 'my login',
work: {
title: 'my title',
phone: {
mobile: '123',
work: '456'
}
}
}
第一个参数是要取消展平的对象,第二个参数是修改obj
还是创建新对象。第二个参数是可选的,默认为 false
。
function unflatten(obj, modify){
var i, j, keys, ref, result = modify ? obj : {};
for(i in obj){
for(keys = i.split('.'), ref = result, j = 0; j < keys.length - 1; j++)
ref = (ref[keys[j]] = ref[keys[j]] || {});
ref[keys[j]] = obj[i];
if(modify && j)
delete obj[i];
}
return result;
}
你试试这个
function toObj(str)
{
var output = {};
for(var key in str)
{
var nodes = key.split('.'), dest = output;
if(nodes.length < 1) continue;
for(var i = 0; i < (nodes.length - 1); ++ i)
{
var node = nodes[i];
dest = (dest[node] === undefined) ? (dest[node] = {}) : dest[node];
}
dest[nodes[nodes.length - 1]] = str[key];
}
return output;
}
调用函数
toObj({
'login': 'my login',
'work.title' : 'my title',
'work.phone.mobile' : '123',
'work.phone.work' : '456'
});
演示。
相关文章:
- 如何在Javascript中将JSon对象转换为数组
- 如何将TypeScript对象转换为普通对象
- JavaScript代码问题:我正在将对象转换为数组
- 如何将对象转换为数组
- JS-如何将图像对象转换为灰度并显示
- 如何将javascript对象转换为json
- 将Java对象转换为JSON
- Undercore将对象转换为数组并按关键字名称排序
- Javascript,简化了对象转换
- Mongo-JS-如何将BSON/JSON对象转换为XML
- 将一个对象转换为一个单键对象数组(带下划线?)
- 如何将一个对象转换为数组对象
- 如何将对象转换为对象数组javascript
- 将 JSON 对象转换为 JSON 树
- 将主干集合对象转换为其原始类型
- 将 JSON 对象转换为序列化字符串以进行服务器端处理
- 将 JavaScript 对象转换为其他格式
- Angularjs:将对象转换为数组
- 如何将数组的对象转换为对象
- JavaScript 中的对象转换