2012-01-05 5 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 Demo] (http://jsfiddle.net/ZgqdW/) – qwertymk

+0

Boo jQuery - определенно не требуется! :) – buley

+0

@editor: Если у вас есть jQuery уже на странице, то почему бы не использовать его? – qwertymk

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/

Смежные вопросы