Eu só queria manter isso para referência sobre como fazer um loop rápido pelas chaves e valores de um objeto, se necessário. Também incluí uma implementação usando jQuery .each
Observe as limitações de usar um loop for … in, pois ele itera sobre as propriedades de um objeto em uma ordem arbitrária e precisa usar .hasOwnProperty, a menos que as propriedades herdadas queiram ser mostradas.
<b> Mostrar objetos </b>
function showObject(obj) {
var result = "";
for (var p in obj) {
if( obj.hasOwnProperty(p) ) {
result += p + " , " + obj[p] + "n";
}
}
return result;
}
<b> Mostrar objetos com .each </b>
function showObjectjQuery(obj) {
var result = "";
$.each(obj, function(k, v) {
result += k + " , " + v + "n";
});
return result;
}
<b> Teste </b>
var test = {
'type' : 'news',
'name' : 'article1'
};
showObject(test);
// type , news name , article1
showObjectjQuery(test);
// type , news name , article1
<b> Um exemplo mais útil chamando uma função nas chaves e valores do objeto </b>
Esta abordagem de loop através de chaves e valores em um objeto pode ser usada para realizar operações mais úteis no objeto, por exemplo, o método pode chamar uma função passada em cada um dos valores. Um exemplo disso é o método foIn em mout.js, que itera por meio das chaves e valores do objeto que chamam a função passada.
function forIn(obj, fn, thisObj){
var key, i = 0;
for (key in obj) {
if (exec(fn, obj, key, thisObj) === false) {
break;
}
}
function exec(fn, obj, key, thisObj){
return fn.call(thisObj, obj[key], key, obj);
}
return forIn;
});
<b> Exemplo de uso de forIn </b>
function Foo(){
this.foo = 1;
this.bar = 2;
}
var obj = new Foo();
var result = 0;
var keys = [];
forIn(obj, function(val, key, o){
result += val;
keys.push(key);
});
console.log(result); // 3
console.log(keys); // ['foo', 'bar']
Respostas relacionadas:
javascript foreach