2013-11-20 9 views
7

मैं एक सुंदर जटिल वर्कफ़्लो से निपट रहा हूं जिसे मैं जावास्क्रिप्ट डेटा संरचना के रूप में प्रस्तुत करना चाहता हूं। प्रवाह अनिवार्य रूप से प्रश्नों और उत्तरों का एक सेट है जहां एक प्रश्न का उत्तर प्रभावित करता है कि अगला प्रश्न किससे पूछा जाता है।मैं इस वर्कफ़्लो को जावास्क्रिप्ट डेटा संरचना के रूप में कैसे प्रस्तुत करूं?

enter image description here

मुझे यकीन है कि कैसे एक जावास्क्रिप्ट वस्तु के साथ काम करने के लिए आसान है कि में इस प्रवाह परिवर्तित करने के लिए नहीं कर रहा हूँ: निम्नलिखित क्या प्रवाह कैसा लग सकता है की एक बुनियादी उदाहरण है। मैं आदर्श रूप से ऐसी संरचना बनाना चाहता हूं जो लूप/रिकर्स करना आसान हो और यह आसानी से संशोधित हो, ताकि अगर कोई बाद में प्रवाह को बदलना चाहे, तो वे बहुत सारे बदलाव किए बिना ऐसा कर सकते हैं।

मैं इस तरह लग रहा है नोड्स एक से अधिक माता पिता हो सकता है जहां अजीब वृक्ष संरचना के कुछ प्रकार है। (मुझे यकीन नहीं है कि इस तरह के डेटा संरचनाओं को बुलाया जाता है।)

वैसे भी, मेरे पास एकमात्र विचार है जो प्रत्येक नोड को एक आईडी असाइन करना है, और उसके बाद निम्न की तरह नोड ऑब्जेक्ट्स की एक सरणी बनाएं:

{ 
    id: 5, 
    parents: [2, 3], 
    children: [6, 7, 8] 
} 

हालांकि, जब यह नोड ऑब्जेक्ट्स के माध्यम से लूपिंग की बात आती है तो वास्तव में यह लचीला लगता है (हालांकि मैं गलत हो सकता हूं)।

किसी को भी डेटा संरचना (रों) किस तरह मैं में संभवतः कैसे जावास्क्रिप्ट में उन्हें लागू करने के देखने के लिए और चाहिए पर कुछ अनुदेश/मार्गदर्शन प्रदान करते हैं कृपया सकता है, मैं बहुत सराहना की जाएगी।

अग्रिम में बहुत बहुत धन्यवाद।

+3

यह एक संयुक्ताक्षर, या निर्देशित ग्राफ की तरह दिखता है। – glomad

+0

धन्यवाद, इथसी। मैं उन दोनों को देखूंगा और वापस रिपोर्ट करूंगा। – HartleySan

+0

यह देखने में लायक हो सकता है: http://stackoverflow.com/a/6894080/2282538 – Tyler

उत्तर

6

आपका प्रारंभिक विचार आपके परिदृश्य में फिट होगा। साथ ही, डेटा संरचना के बारे में आपने पहले से ही अपने प्रश्न का उत्तर दिया है: JSON। मैं इसके साथ रहूंगा।

केवल एक चीज मैं बदल जाएगा नहीं है: मुझे नहीं लगता कि जब तक आप एक प्रश्न का उत्तर से वापस जाने के लिए है आप, माता-पिता को बचाने की जरूरत है।
यदि ऐसा है तो आपके पास directed acyclic graph है और यह एकमात्र संरचना है जिसे मैं आपके परिदृश्य के संदर्भ में सोच सकता हूं।
वहाँ बाहर कुछ चौखटे जो, लागू करने और जे एस में यह रेखांकन visualizing की देखभाल this question का उल्लेख कर रहे हैं। के रूप में यहाँ प्रदर्शित

var graph = graph || {}; 

graph.nodes = [ 
    {id:1, children:[2,3]}, 
    {id:2, children:[]}, 
    {id:3, children:[4]}, 
    {id:4, children:[]} 
]; 

//Returns the next question-id for an answer-id 
//or -1 if this was the last answer 
graph.nextQForA = function(aId) { 
    for(var i = 0; i < graph.nodes.length; i++) 
    { 
    if(graph.nodes[i].id === aId && graph.nodes[i].children.length > 0) 
     return graph.nodes[i].children[0]; 
    } 

    return -1; 
} 

उपयोग (क्रोम कंसोल):
enter image description here

आप अपने दम पर इस संरचना को लागू करने के लिए जा रहे हैं, तो यहां कुछ (वास्तव में बुनियादी) प्राप्त करने के लिए आप शुरू कर दिया कोड है

ट्रैवर्सल को पुनरावर्तक के बजाय रिकर्सिव किया जा सकता है।

0

आप इस के लिए ChoiceScript उपयोग करने पर विचार कर सकते हैं। जावास्क्रिप्ट-आधारित लाइब्रेरी को चुनना बेहद आसान है जो आपको अपना स्वयं का प्रश्न-उत्तर-उत्तर प्रकार की वेबसाइट बनाने की अनुमति देता है, और ऐसा लगता है कि यह आपकी आवश्यकताओं को बहुत अच्छी तरह से फिट कर सकता है।

बस अपने कार्यप्रवाह में की तरह, ChoiceScript, गतिशील सवाल और जवाब के लिए अनुमति देता है जिसका अर्थ है कि एक सवाल का जवाब अगले प्रश्न आप (ओपी में विस्तृत ठीक वैसे ही जैसे) प्रभाव डाल सकते हैं।

लिंक: http://www.choiceofgames.com/make-your-own-games/choicescript-intro/

ChoiceScript मुख्य रूप से खेल बनाने के लिए प्रयोग किया जाता है, लेकिन ऐसा लगता है कि यह भी आपकी आवश्यकताओं के अनुरूप होगा लग रहा है। यहाँ इस JavaScript लाइब्रेरी का उपयोग कर बनाया एक खेल का एक उदाहरण है:

https://www.choiceofgames.com/ninja/#utm_source=cog&utm_medium=web&utm_content=ourgames

संबंधित मुद्दे

 संबंधित मुद्दे