2012-01-05 120 views
1

我想遍歷下方和輸出,結合了不同的設置的字符串:的Javascript遍歷對象文本

遍歷此:

config : { 

    settings : { 
    width: 880, 
    height: 495, 
    byline: false, 
    title: false, 
    portrait: false 
    } 
} 

輸出:

var output = '&height=495&width=880&title=false&byline=false&portrait=false', 

我該怎麼辦?

回答

6

我不知道你是否明確要循環,但你可以簡單地使用jQuery.param

var output = "&" + $.param(obj.config.settings); 
// I assumed `obj` contains `config` 

的順序可能會有所不同,但對於查詢字符串表示無所謂。

+2

[演示的jsfiddle(http://jsfiddle.net/ZgqdW/) – qwertymk 2012-01-05 23:12:19

+0

Boo jQuery - 絕對不需要! :) – buley 2012-01-05 23:12:20

+0

@editor:如果你已經在頁面上有jQuery,那麼爲什麼不使用它呢? – qwertymk 2012-01-05 23:13:08

2
var attr, val, settings = config.settings, 
    output, count = 0; 
if ('undefined' !== typeof settings) { 
    for (attr in settings) { 
     val = settings[attr]; 
     if (0 === count) { 
      output = output + val; 
     } else { 
      output = output + '&' + val; 
     } 
     count += 1; 
    } 
    console.log(output); 
} 

注意,上面的代碼增加,你不添加&到第一無功優化。我不認爲你會想要在一個get var字符串。如果這樣做,只需更改爲output = output + val;,從if開始到else結束。

1

如何:

function print(obj) { 
    return Object.keys(obj).map(function (name) { 
     return '&' + name + '=' + obj[ name ]; 
    }).join(''); 
} 

用法:

var output = print(obj.config.settings); 

現場演示:http://jsfiddle.net/w3D9M/