JavaScript根据指定路径创建对象

来源:互联网 发布:单例模式 js 编辑:程序博客网 时间:2024/05/22 06:46

这个功能在lodash工具库中已经有了实现。

这篇博文我提供了自己的实现。

//obj:已有的对象//keyPath:字符串代表的路径//value:要赋予的值function deepAssignment(obj, keyPath, value) {//匹配出属性名    var array = keyPath.match(/\w+/g);//遍历属性名数组    for(var i=0;i<array.length-1;i++){        var cur = array[i];        var next = array[i+1];//如果当前路径并没有相应对象//就创建对象        if(!obj[cur]){//如果要创建的是对象            if(isNaN(next)){                obj[cur] = {};            }//如果要创建的是数组            else{                obj[cur] = [];            }        }//obj指向新创建的对象        obj = obj[cur];    }//最后一步赋值    obj[array[i]] = value;}var keyPath = "asdf[0][1][1].sss.ddd";var value = 2;var obj = {};deepAssignment(obj, keyPath, value);//2document.write(obj.asdf[0][1][1].sss.ddd);