निम्नलिखित स्क्रिप्ट के साथ मैं स्ट्रिंग्स की दो सूची की तुलना करना चाहता हूं, जिनमें अल्पविराम से अलग किए गए तार हैं। यदि समान तार हैं, तो मैं एक अन्य HTML-तत्व बनाना चाहता हूं। यह ठीक काम करता है, अगर दोनों स्ट्रिंग्स की सूची में एक से अधिक स्ट्रिंग हैं। यदि एक सूची में अल्पविराम के बिना केवल 1 स्ट्रिंग है, तो केवल अन्य शर्त लागू की जाएगी।

उदाहरण1 (काम करता है):

स्ट्रिंग्स की सूची 1 = टेस्ट1, टेस्ट2, टेस्ट3; स्ट्रिंग्स की सूची 2 = टेस्ट 1, टेस्ट 2

अपेक्षित परिणाम: टेस्ट1, टेस्ट2

उदाहरण2 (विफल):

स्ट्रिंग्स की सूची 1 = टेस्ट1, टेस्ट2, टेस्ट3; स्ट्रिंग्स की सूची 2 = test1

अपेक्षित परिणाम: परीक्षण1

var checkDiagnoses = "test1, test2, test3"
var splitDiagnosesArray =checkDiagnoses.split(',');
   
$('.addDiagnoses').html($('.addDiagnoses').html().split(', ').map(function(el) {
  if (el.indexOf(splitDiagnosesArray)) {
    return '<span class="diagnosesTags">' + el + '<span class="materialIcon equalDiagnosis materialicons-Materialicon material-icons">star</span></span>'
} else {
    return '<span class="diagnosesTags">' + el + '</span>'
}

}))
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="addDiagnoses">test1</div>
0
mm1975 15 फरवरी 2021, 13:18

2 जवाब

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

तीन मुद्दे:

  • .split(', ') बनाम .split(',') मेल नहीं खाएगा
  • txt.indexOf(array) गलत रास्ते पर है
  • txt.indexOf(array) रिटर्न -1 यदि नहीं मिलता है, तो इसकी तुलना >=0 से की जानी चाहिए

देना (इसे टेस्टबेड बनाने के लिए कुछ मामूली बदलावों के साथ, उदाहरण के लिए div-> इनपुट / div.html() -> input.val ())

var checkDiagnoses = "test1,test2,test3"
var splitDiagnosesArray = checkDiagnoses.split(',');

$("#btn").click(function() {

  $('#output').html(
    $('.addDiagnoses').val().split(',').map(function(el) {
      el = el.trim();

      if (splitDiagnosesArray.indexOf(el) != -1) {
        return '<span class="diagnosesTags">' + el + '*</span>'
      } else {
        return '<span class="diagnosesTags">' + el + '</span>'
      }
    }))
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type='text' class="addDiagnoses" value='test1'></div>
<br/>
<button type='button' id='btn'>test</button>
<hr/>
<div id="output"></div>
1
freedomn-m 15 फरवरी 2021, 13:35
var checkDiagnoses = "test1, test2, test3"
var splitDiagnosesArray =checkDiagnoses.split(',').map(s => s.trim())

$('.addDiagnoses').html($('.addDiagnoses').html().split(',').map(function(el) {
    el = el.trim()
    if (splitDiagnosesArray.includes(el)) {
    return '<span class="diagnosesTags">' + el + '<span class="materialIcon equalDiagnosis materialicons-Materialicon material-icons">star</span></span>'
    } else {
    return '<span class="diagnosesTags">' + el + '</span>'
    }

}))
0
steven7mwesigwa 15 फरवरी 2021, 13:48