मैं अपने सरणी में बाद में प्रत्येक पूंजी से पहले "-" जोड़ने के लिए जावास्क्रिप्ट स्प्लिस विधि की कोशिश कर रहा हूं लेकिन यह काम नहीं कर रहा है। मुझे नहीं पता कि मैं क्या गलत कर रहा हूं। यहाँ मेरा कोड नीचे है।

function spinalCase(str) {
  let strArr = [];
  for(let i = 0; i < str.length; i++){
    strArr.push(str[i]);
  }
  for(let i = 0; i < strArr.length; i++){
    if(strArr[i] !== strArr[i].toLowerCase()){
      strArr.splice(strArr.indexOf(strArr[i]),0, "-");
    }
  } 
console.log(strArr);
}

spinalCase('thisIsSpinalTap');
0
wealthmiq 24 नवम्बर 2019, 16:58

3 जवाब

मुझे पता है कि आप ब्याह का उपयोग करना चाहते थे, लेकिन यहां थोड़ा रेगेक्स समाधान है; शायद ज़रुरत पड़े।

function spinalCase(str) {
 return str.replace(/[A-Z]/g, "-$&").toLowerCase();
}

console.log(spinalCase("thisIsSpinalTap"))
// this-is-spinal-tap
1
marshy101 24 नवम्बर 2019, 17:30

जब आप करते हैं तो आपने अपनी सरणी बदल दी:

strArr.splice(strArr.indexOf(strArr[i]),0, "-");

तो strArr.length लूप के लिए स्थिर नहीं है for(let i = 0; i < strArr.length; i++)

0
sɐunıɔןɐqɐp 24 नवम्बर 2019, 17:17

जब आप splice के साथ एक नया तत्व जोड़ते हैं तो आप सरणी के length को बढ़ा रहे होते हैं और लूप कभी भी समाप्त नहीं हो पाता है। यदि आप सरणी के अंत से शुरुआत तक लूप का काम करते हैं तो आप इस समस्या से बच सकते हैं।

function spinalCase(str) {
  let strArr = [];
  for (let i = 0; i < str.length; i++) {
    strArr.push(str[i]);
  }

  // Work the loop from the end to the beginning
  for (let i = strArr.length - 1; i >= 0 ; i--) {
    if (strArr[i] !== strArr[i].toLowerCase()) {
      strArr.splice(strArr.indexOf(strArr[i]), 0, "-");
    }
  }
  console.log(strArr.join(''));
}

spinalCase('thisIsSpinalTap');
1
Andy 24 नवम्बर 2019, 17:10