1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51
| var monObjet = {
key1: 'elem1',
key2: 'elem2',
key3: 'elem3',
key4: 'elem4'
}
var tabInd = ['x','y','z'];
/* transformation en obj de la forme
{
'key1' : { 'value' : 'elemen1', 'indice' : 'x' },
'key2' : { 'value' : 'elemen2', 'indice' : 'y' },
'key3' : { 'value' : 'elemen3', 'indice' : 'z' },
'key4' : { 'value' : 'elemen4', 'indice' : null}
};
*/
function objetAddKey( obj, tab, label){
var objTmp = {},
indice,
valeur,
key,
count = 0;
for( key in obj){
// lecture valeur de la key
valeur = obj[key];
// lecture valeur à affecter
// si on déborde vaudra undefined
indice = tabInd[count++];
// donc mis à null
indice = indice ? indice : null;
// si déjà un objet on ajoute la new key
if( typeof obj[key] === 'object'){
// copy de l'objet (ce n'est pas une copie en profondeur !)
objTmp[key] = JSON.parse( JSON.stringify( obj[key]));
}
else{
// sinon on crée le nouvel objet
objTmp[key] = {};
// affectation des key/value
objTmp[key]['value'] = valeur;
}
// ajout nouvelle entrée
objTmp[key][label] = indice;
}
return objTmp;
}
// ajout dans monObjet de la clé 'indice' associée à la valeur contenue dans tabInd (ordre des index)
monObjet = objetAddKey( monObjet, tabInd, 'indice');
console.log( monObjet); |
Partager