javascript从字符串动态创建多维数组

cra*_*rab 2 javascript arrays object

<span id="local->ethernet->port3->rx_flow">q4234</span>
<span id="local->ethernet->port3->rx">q345</span>
<span id="local->ethernet->port1->rx_flow">128</span>
<span id="remote->id">128</span>
Run Code Online (Sandbox Code Playgroud)

我需要通过元素中的ID示例从中创建多维数组 <span id="local->ethernet->port3->rx_flow">q4234</span>

我需要的数组是 array["local"]["ethernet"]["port3"]["rx_flow"]="q4234"

我创建的功能是:

    function make_cfg(){
    var result=new Array();
    var x=document.getElementById(*);
    var len=x.length;
    var arr;
    for (var i=0; i<=len; i++;){
        if(x[i].id){
        if(x[i].id.indexOf("->") != -1) {
            arr=x[i].id.split("->");

            result=make_obj(result,arr);

        }
        }
    }
    return result;
    }
Run Code Online (Sandbox Code Playgroud)

我不知道如何发挥作用 make_obj()

kap*_*apa 5

我不会为你写完整件事,我只是稍微帮助了一下.

这个片段将采取两个字符串(基本idinnerHTML,在这里ss2),并构造一个嵌套的对象(也有在Javascript没有关联数组)出来.

var s='local->ethernet->port3->rx_flow',
    s2='q4234',
    a=s.split('->'),
    obj=constructObject(a, s2);

function constructObject(a, final) {
    var val=a.shift();
    var obj={};
    if (a.length>0) {
        obj[val]=constructObject(a, final);
    } else {
        obj[val]=final;
    }
    return obj;
}
Run Code Online (Sandbox Code Playgroud)

它使用递归来实现其目标.如果您对代码有任何疑问,请询问.

在这里你可以尝试一下.

还剩下什么?

我想你想从跨度收集这些东西到一个对象,我的例子将为每个s/ 创建一个对象s2.如果您还有其他问题,我很乐意为您提供帮助.