1

次のように、REST スタイルの URL を JavaScript リテラルに変換したいと考えています。

から:

var url = "/a/b/c/d";

に:

var obj = {
   a:{
     b:{
       c:{
         d:{}
       }
     }
   }
};

これをどのように行いますか?

4

2 に答える 2

3

あなたはおそらくそれを凝縮することができますが、ここに解決策があります:

var u = '/a/b/c/d';
var t = u.split('/');
var o = {};
for (var i=t.length; i-->1; ) {
  var temp = o;
  o = {};
  o[t[i]] = temp;
}

結果はoです。

于 2013-01-10T11:48:26.573 に答える
1

私の試み:

var url = '/a/b/c/d';
var fun = function(a) {  
  var res = {};
  res[a[0]] = a.length == 1 ? {} : fun(a.slice(1));
  return res;
};

// obj has what you need
var obj = fun(url.split('/').slice(1));    


// OTHER EXAMPLE
var t = ['that', 'is', 'so', 'fun'];
console.log(fun(t));
// above returns object: {that: { is: { so: { fun: {} }}}}
于 2013-01-10T11:59:47.267 に答える