Vyřaďte zpětné odkazy
důležitost: 5
V jednoduchých případech kruhových odkazů můžeme závadnou vlastnost vyřadit ze serializace podle jejího názvu.
Někdy však nemůžeme použít jen název, protože stejný název může být použit jak v kruhových odkazech, tak v normálních vlastnostech. Můžeme tedy zkontrolovat vlastnost podle její hodnoty.
Napište funkci nahrazení, která zřetězí všechno, ale odstraní vlastnosti, které se odkazují na mítink:
let místnost = {
číslo: 23
};
let mítink = {
titul: "Konference",
obsazenoČím: [{jméno: "Jan"}, {jméno: "Alice"}],
místo: místnost
};
// kruhové odkazy
místnost.obsazenoČím = mítink;
mítink.onSám = mítink;
alert( JSON.stringify(mítink, function nahrazení(klíč, hodnota) {
/* váš kód */
}));
/* výsledek by měl být:
{
"titul":"Konference",
"obsazenoČím":[{"jméno":"Jan"},{"jméno":"Alice"}],
"místo":{"číslo":23}
}
*/
let místnost = {
číslo: 23
};
let mítink = {
titul: "Konference",
obsazenoČím: [{jméno: "Jan"}, {jméno: "Alice"}],
místo: místnost
};
místnost.obsazenoČím = mítink;
mítink.onSám = mítink;
alert( JSON.stringify(mítink, function nahrazení(klíč, hodnota) {
return (klíč != "" && hodnota == mítink) ? undefined : hodnota;
}));
/*
{
"titul":"Konference",
"obsazenoČím":[{"jméno":"Jan"},{"jméno":"Alice"}],
"místo":{"číslo":23}
}
*/
Zde musíme testovat i to, zda klíč=="", abychom vyloučili první volání, kde je v pořádku, že hodnota je mítink.