/**
* 根据字符串"a.b.c.d ..."解析成对应的对象---{ a:{b:{c:{d:{}}}} }
* 函数意义: 写脚本时会用的到,看个人需求啦!
* objStr: 字符串对象(a.b.c.d ...)
* value: 所要赋的值(默认null)
* 返回值:Object
**/
const str = "a.b.c"
function parseStrToObj(objStr, value = null)
{
// 参数判断
if (!objStr || objStr.length <= 0 )
{
return false;
}
const keys = objStr.split(".");
var transArr = {}
if (keys.length == 1)
{
if (!Reflect.has(transArr, keys[0]))
{
transArr[keys[0]] = value;
return transArr;
}
}
if (keys.length >= 2)
{
for (let i = 0; i < keys.length; i++)
{
if (i !== (keys.length - 1)) // 逐层创建对象
{
let objStr = "transArr";
for (let k = 0; k <= i; k++) {
objStr += `[keys[${k}]]`;
}
objStr += `={}`;
eval(objStr);
}
else // 最后赋值的操作
{
let objStr = "transArr";
for (let j = 0; j < keys.length; j++)
{
objStr += `[keys[${j}]]`;
}
objStr += `=value`;
eval(objStr);
return transArr;
}
}
}
}
console.log(parseStrToObj(str2, "345")); //{a: { b: { c: "345" } }}
Js解析形同“a.b.c”的字符串为对象并赋值
最新推荐文章于 2023-11-02 11:41:46 发布