je les suivantes JsonJavascript comment retourner tableau de carte
var myjson = [{
"files": [
{
"domain": "d",
"units": [
{
"key": "key1",
"type": "2"
},
{
"key": "key2",
"type": "2"
},
{
"key": "key3",
"type": "2"
}]
},
{
"domain": "d1",
"units": [
{
"key": "key11",
"type": "2"
},
{
"key": "key12",
"type": "2"
},
{
"key": "key13",
"type": "2"
}]
}]
},
{
"files": [
{
"domain": "d",
"units": [
{
......
Je veux créer un nouveau tableau de ce tableau JSON. La longueur du tableau sera le nombre de "unités" dans cet objet Json. J'ai donc besoin d'extraire des "unités" et d'ajouter des données à partir d'objets parents.
units: [{
domain: "",
type: "",
key: ""
}, {
domain: "",
type: "",
key: ""
},
{
domain: "",
type: "",
key: ""
}
....
];
Je pense que je peux probablement faire quelque chose comme ceci:
var res = [];
myjson.forEach(function(row) {
row.files.forEach(function(tfile) {
tfile.units.forEach(function(unit) {
var testEntity = {
domain: tfile.domain,
type : unit.type,
key: unit.key
};
res.push(testEntity);
});
});
});
Mais il est difficile de lire et ne regarde pas si bon. Je pensais faire quelque chose comme:
var RESULT = myjson.map(function(row) {
return row.files.map(function(tfile) {
return tfile.units.map(function(unit) {
return {
domain: tfile.domain,
type : unit.type,
key: unit.key
};
});
});
});
Mais cela ne fonctionne pas et ne semble pas mieux. Y a-t-il un moyen de le faire, peut-être de façon plus déclarative? espéré Ramda.js pourrait aider.
Est-ce qu'il y a une bonne approche en général pour obtenir des données de n'importe quel json emboîté de manière lisible?
La mise en œuvre quelque chose comme:
nestedjson.findAllOnLastlevel(function(item){
return {
key : item.key,
type: type.key,
domain : item.parent.domain}
});
Ou en quelque sorte aplatir cette JSON si toutes les propriétés de tous les parents objets sont déplacés à leafs enfants. myjson.flatten ("files.units")
jsbin http://jsbin.com/hiqatutino/edit?css,js,console
Un grand merci
si vous avez besoin d'une version de travail, que vous avez déjà ou une bonne version à la recherche, ce qui pourrait être accompli avec le style ES6? –
maintenant j'ai une version moche de travail, mais je fais beaucoup de ce "opérations json imbriquées" Pensait à une approche appropriée. Peut-être même une approche générale. Le json que j'ai fourni est simplifié. Cela pourrait être plus profond. De plus, le nouveau "=>" n'est pas disponible dans mon cas. – Ant
Le principal problème est de savoir quelle propriété doit itérer. vous pourriez donner un chemin avec une approche récursive, mais au moins vous avez besoin des propriétés pour se recombiner. –