2017-10-04 1 views
0

Dans le tableau suivant, je dois remplacer des valeurs dans le nom et les colonnes de classe en utilisant les objets suivantsRemplacer les valeurs dans plusieurs lignes dans plusieurs colonnes ont fourni un objet mis en correspondance pour chaque colonne

+----------------+ 
| id name class | 
+----------------+ 
| 1 a  x | 
| 2 b  y | 
| 3 a  z | 
+----------------+ 

name 
{ 
    a: "John", 
    b: "Jill" 
} 

class 
{ 
    x: "Maths", 
    y: "Science", 
    z: "Arts" 
} 

table finale devrait ressembler à la suivant:

+----------------------+ 
| id name class | 
+----------------------+ 
| 1 John  Maths | 
| 2 Jill  Science | 
| 3 John  Arts | 
+----------------------+ 

Quel est un moyen efficace d'atteindre cet objectif dans dexie.js?

Répondre

1

Vous aurez besoin de parcourir toute la table et de remplacer les rangées une par une.

var map = { 
    "name": { 
    "a": "John", 
    "b": "Jill" 
    }, 
    "class": { 
    "x": "Maths", 
    "y": "Science", 
    "z": "Arts" 
    } 
}; 

var db = new Dexie('yourdbname'); 
db.version(1).stores({ 
    yourTable: 'id' 
}); 

db.yourTable.toCollection().modify(row => 
    Object.keys(map).forEach(column => row[column] = map[column][row[column]]));