मैं इस पर लंबे समय से सफलता के साथ काम कर रहा हूं। मेरे पास एक जेनरेट की गई तालिका है जिसे मुझे टेक्स्ट सामग्री द्वारा फिर से बनाने और पुन: क्रमबद्ध करने की आवश्यकता है।

https://codepen.io/thebigragu/pen/pojyMaO

प्रारंभिक तालिका उदा।

<table>
<thead>
<tr><th>Rank</th></tr>
<tr><th>ID</th></tr>
<tr><th>Pts</th></tr>
</thead>
<tbody>
<tr><td>雙黑鑽石合作夥伴</td></tr>
<tr><td>黃金合作夥伴</td></tr>
<tr><td>黑鑽石合作夥伴</td></tr>
</tbody>
</html>

मैंने सही क्रम के साथ एक सरणी बनाई है:

var ranks = [
  "黑鑽石合作夥伴",
  "黃金合作夥伴",
  "雙黑鑽石合作夥伴"
]

और मैं स्ट्रिंग तुलना के आधार पर एक नई तालिका बनाना चाहता हूं। मैं तालिका w/एक सरणी (w/सही क्रम) में प्रत्येक स्ट्रिंग की तुलना करने में सक्षम हूं, लेकिन जब मैं नई तालिका बनाता हूं तो ऑर्डर नहीं बदलता है।

किसी भी प्रतिक्रिया की सराहना की। ty!

0
coreyl 18 अप्रैल 2020, 00:48

1 उत्तर

सबसे बढ़िया उत्तर

आप जो कर रहे हैं वह उल्टा है, वास्तव में आपको पहले ranks सरणी पर और फिर tr सरणी पर लूप करना चाहिए क्योंकि tr ranks पर निर्भर करता है (स्थिति की जानकारी के लिए।) और दूसरा नहीं निकलने का रास्ता

for(l = 0; l < ranks.length; l++){

    for (i = 0; i < tr.length; i++){

        let txt = tr[i].children[0].querySelector('a').textContent;

        if( ranks.indexOf(txt) == 0 ){

          var newIndex = ranks.indexOf(txt);
          table.appendChild(tr[i]);
          ranks.shift(); // pop the top item off ranks array
        }
    }
} 

यहां देखिए यह कैसे काम करता है

लूप ओवर रैंक -> लूप ओवर ट्र

प्रत्येक आंतरिक लूप पुनरावृत्ति में (tr) जांचें कि क्या iवें tr आइटम उस टेक्स्ट से मेल खाता है जो ranks सरणी के पहले स्थान पर है

यदि हाँ इसे <table id="resorted-table"> में पेस्ट करें और शीर्ष आइटम को ranks से हटा दें (ताकि आप लूप के बाद के रन में उसी तर्क का उपयोग कर सकें)

1
Viney 18 अप्रैल 2020, 09:01