خريطة إرجاع جافا سكريبت مع المفتاح كسلسلة فارغة
-
21-12-2019 - |
سؤال
في D3، مثال على تجميع الحافة, ، لدينا هذا الكود
// Lazily construct the package hierarchy from class names.
function packageHierarchy(classes) {
var map = {};
function find(name, data) {
var node = map[name], i;
if (!node) {
node = map[name] = data || {name: name, children: []};
if (name.length) {
node.parent = find(name.substring(0, i = name.lastIndexOf(".")));
node.parent.children.push(node);
node.key = name.substring(i + 1);
}
}
return node;
}
classes.forEach(function(d) {
find(d.name, d);
});
return map[""];
}
لا أستطيع معرفة ما return map[""];
وسائل.أيه أفكار؟
المحلول
بالنسبة لكل فصل يتم تقديمه، فإنه يعمل بشكل متكرر من خلال الوالدين، مع رفع اسم الفصل حتى الأخير .
, ، وإضافة كل أصل إلى الخريطة أثناء التقدم، وأخيرًا إضافة أصل بسلسلة فارغة للاسم (لم تكن هناك نقطة).
يعتبر هذا الأصل بمثابة الجذر، وله مسار سلسلة فارغة، وهذه العقدة هي ما يتم إرجاعه.
سأحاول أن أشرح بشكل أفضل بمثال؛
إعطاء فئة مع المسار الكامل Main.Sub.Class
, ، سيضيف الكود Main.Sub.Class
عقدة على الخريطة بهذا المسار، ثم حاول العثور على/إنشاء عقدة لـ Main.Sub
, ، وإضافة نفسها كطفل إلى هذه العقدة الأصلية.
إذا كان عليه إنشاء عقدة جديدة لـ Main.Sub
, ، سيحاول العثور على أصل هذا الفصل أيضًا، (Main
)، و أضف Main.Sub
كطفل ل Main
.ثم يستمر في الارتفاع مرة أخرى، ولكن بما أنه لا يوجد .
في المسار، المسار الأصل هو ""
(سلسلة فارغة).
نظرًا لأن جميع الفئات ستنتهي في النهاية بإضافة نفسها كطفل إلى عقدة السلسلة الفارغة، فيمكن اعتبار هذه العقدة هي العقدة الجذرية، وكذلك العقدة التي سيتم إرجاعها.