Javascript循环通过Object Literal

时间:2012-01-05 23:05:20

标签: javascript jquery

我想迭代以下内容并输出一个结合了不同设置的字符串:

循环:

config : {

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

输出:

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

我该怎么做?

3 个答案:

答案 0 :(得分:6)

我不知道您是否明确要循环,但您只需使用jQuery.param

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

顺序可能不同,但对于无关紧要的查询字符串。

答案 1 :(得分: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);
}

注意,上面的代码添加了优化,您不会在第一个var中添加&。我不认为你想要一个get var字符串。如果您这样做,只需更改为output = output + val;,从if开始到else结束。

答案 2 :(得分: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/