Qayta havolalarni chiqarib tashlash
Oddiy holatlarda, tsiklik bog’lanishlarda, biz uning nomidan ketma-ketlikdan kelib chiqadigan mulkni chiqarib tashlashimiz mumkin.
Ammo ba’zida ko’plab qayta havolalar mavjud. Va ismlar tsiklik ma’lumotnomalar ham, oddiy xususiyatlarda ham ishlatilishi mumkin.
Hamma narsani torlashtirish uchun replacer
funktsiyasini yozing, lekin meetup
ga havola qilingan xususiyatlarni olib tashlang:
let room = {
number: 23
};
let meetup = {
title: "Konferensiya",
occupiedBy: [{name: "John"}, {name: "Alice"}],
place: room
};
// tsiklik ma'lumotnomalar
room.occupiedBy = meetup;
meetup.self = meetup;
alert( JSON.stringify(meetup, function replacer(key, value) {
/* sizning kodingiz */
}));
/* natija quyidagicha bo'lishi kerak:
{
"title":"Konferensiya",
"occupiedBy":[{"name":"John"},{"name":"Alice"}],
"place":{"number":23}
}
*/
let room = {
number: 23,
};
let meetup = {
title: "Conference",
occupiedBy: [{ name: "John" }, { name: "Alice" }],
place: room,
};
room.occupiedBy = meetup;
meetup.self = meetup;
alert(
JSON.stringify(meetup, function replacer(key, value) {
return key != "" && value == meetup ? undefined : value;
})
);
/*
{
"title":"Conference",
"occupiedBy":[{"name":"John"},{"name":"Alice"}],
"place":{"number":23}
}
*/
Bu erda, shuningdek, chaqiruvning
normal holati bo’lgan birinchi qo’ng’iroqni istisno qilish uchun key ==""
ni sinab ko’rishimiz kerak.