javascript - 请问这题如何解?
巴扎黑
巴扎黑 2017-04-11 12:31:36
[JavaScript讨论组]

如图:有一个字符串 str,和一个空对象obj,把他变成如下格式。

我的错误解法:




    
    Document


    
    
    

得出的结果不是嵌套的,求高手解惑。

巴扎黑
巴扎黑

全部回复(4)
伊谢尔伦

你的写法是显然不对的,参考我的改动(一共改动四行),算是一种方案。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<input type="" name="">
<button>ok</button>
<p></p>
<script type="text/javascript">
    //q1
    (function() {
        var ipt = document.getElementsByTagName('input')[0],
                btn = document.getElementsByTagName('button')[0],
                p = document.getElementsByTagName('p')[0],
                obj = {};
        document.addEventListener('keyup', function(e) {
            if (e.keyCode === 13) {
                btn.click();
            }
        });

        btn.addEventListener('click', function(e) {
            var temp; //增加
            obj = temp ={};//增加
            var v = ipt.value;
            if (v === "") {
                p.innerHTML = ('no input!');
            } else {
                var arr = v.split(/[, _]/);
                console.log(arr);
                for (var i = 0; i < arr.length; i++) {
                    temp[arr[i]]={};//增加
                    temp=temp[arr[i]];//增加
                }
                p.innerHTML = ('obj = ' + JSON.stringify(obj));
            }
        });
    }());
    //q2
</script>
</body>
</html>
天蓬老师

图片的逻辑可以这样实现

    var str ="key3,key2,key3,key1";
    var obj ={};
    var strList = str.split(",");
    for(var i = strList.length;i >= 0;--i){
        var obj2={};
        obj2[strList[i]]=obj;
        obj = obj2;
    }
    console.log(obj);
伊谢尔伦

Literally one liner's showing off:

var str ="key1,key2,key3,key4";

function strToObj(str) {
    return str.split(",").reverse().reduce((acc, ele) => ({[ele]: acc}), {})
}

strToObj(str);
黄舟
var str='key1.key2.key3';
var obj={};
var array=str.split('.');
var that=obj;
for(var i=0;i<array.length;i++){
    that[array[i]]={};
    that=that[array[i]];
}
console.log(JSON.stringify(obj));
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号