2017-10-03 5 views
1

Je rencontre des problèmes pour assembler ce code.tableau d'objets, objet par clé d'un objet d'entrée

{ 
name: 'bob', 
age: 55, 
role: 'baker' 
} 

aimerait obtenir:

[[name:'bob'],[age:55],[role:'baker']] 

C'est ce que j'ai:

function valFunct(obj) { 
var values =[]; 
for(var key in obj){ 
values.push(obj[key]); 
} 
return values 
} 

La sortie est pas ce que je veux.

+5

La sortie souhaitée n'est pas JavaScript valide. Voulez-vous '[{name: 'bob'}, {age: 55}, {rôle: 'boulanger'}]'? –

+2

ou peut-être '[[" nom "," bob "], [" âge ", 55], [" rôle "," boulanger "]]'? – Alnitak

+1

bien que dans mon expérience, si vous voulez diviser un objet parfaitement bon dans un tableau de paires de valeurs clés, vous faites probablement mal ... – Alnitak

Répondre

-2

Si vous voulez juste un tableau de paires, vous pouvez fixer votre bouton

values.push([key, obj[key]]); 
+0

ce n'est pas vraiment faux, _should_ l'OP veut réellement [[key1, value1], [key2, value2], ...] ' – Alnitak

3

Tout d'abord, [[name:'bob'],[age:55],[role:'baker']] ne fonctionnera pas, parce que l'index d'un tableau doit être un nombre pas une chaîne. Vous cherchez peut-être pour quelque chose comme ceci:

var input = { 
 
    name: 'bob', 
 
    age: 55, 
 
    role: 'baker' 
 
}; 
 

 
function transform(obj) { 
 
    return Object.keys(obj).map(function(key) { 
 
    return { [key]: obj[key] } 
 
    }); 
 
} 
 

 
console.log(transform(input));

Ou voulez-vous transformer en entrées d'objet (comme ES7 Object.entries):

var input = { 
 
    name: 'bob', 
 
    age: 55, 
 
    role: 'baker' 
 
}; 
 

 
function transform(obj) { 
 
    return Object.keys(obj).map(function(key) { 
 
    return [key, obj[key]]; 
 
    }); 
 
} 
 

 
console.log(transform(input));

2
var person = { first: "rafael", last: "cepeda", age: 24 }; 

function weird_fn(obj) { 
    var arr = []; 
    for (var p in obj) { 
     var o = {}; 
     o[p] = obj[p]; 
     arr.push(o); 
    } 
    return arr; 
} 

console.log(weird_fn(person)); 

Sortie:

[ { first: 'rafael' }, { last: 'cepeda' }, { age: 24 } ] 
+1

Vous avez manqué le' obj.hasOwnProperty (p) ';) – cyrix

+1

@ Cyrix non il n'a pas - ce n'est presque jamais nécessaire dans le code JS moderne. Personne ne modifie de manière imprévisible 'Object.prototype' ces jours-ci, et l'entrée est un simple objet sans chaîne prototype de toute façon. – Alnitak

+0

haha, ou * l'ai-je fait? – Rafael