繁体   English   中英

我如何将修改后的值返回到数组中

[英]how do i return a modified value into an array

我正在研究问题,希望有人可以指出正确的方向。 问题是在句子中找到最长的单词,然后以大写的最长单词返回该句子。 到目前为止,我已经能够找到句子中最长的单词并将其大写,但是我无法返回包含大写单词作为其一部分的句子。

  var capitalize = document.getElementById('capitalize'); var myOutput = document.getElementById('output'); var myInput; capitalize.addEventListener('click',function(){ myInput = document.getElementById('input').value; mySplitInput = myInput.split(' '); var longest=''; for(var i = 0 ; i < mySplitInput.length; i++){ if( mySplitInput[i].length > longest.length){ longest = mySplitInput[i].toUpperCase(); } }; var content = document.createTextNode(longest); myOutput.appendChild(content); }); 
 <input type="input" id="input"> <button id="capitalize">capitalize</button> <div id="output"></div> 

存储最长单词的索引以及单词本身。 然后,您可以使用该索引的大写字母覆盖该单词,并将拆分后的句子与空格粘在一起。

 var capitalize = document.getElementById('capitalize'); var myOutput = document.getElementById('output'); var myInput; capitalize.addEventListener('click',function(){ myInput = document.getElementById('input').value; mySplitInput = myInput.split(' '); var longestIndex, longest=''; for(var i = 0 ; i < mySplitInput.length; i++){ if( mySplitInput[i].length > longest.length){ longestIndex = i; longest = mySplitInput[i].toUpperCase(); } }; mySplitInput[longestIndex] = mySplitInput[longestIndex].toUpperCase(); var content = document.createTextNode(mySplitInput.join(' ')); myOutput.appendChild(content); }); 
 <input type="input" id="input"> <button id="capitalize">capitalize</button> <div id="output"></div> 

您也可以将现有的最长值放入变量中,并用大写的最长值替换。

 var capitalize = document.getElementById('capitalize'); var myOutput = document.getElementById('output'); var myInput; capitalize.addEventListener('click',function(){ myInput = document.getElementById('input').value; mySplitInput = myInput.split(' '); var longest=''; var existing =''; for(var i = 0 ; i < mySplitInput.length; i++){ if( mySplitInput[i].length > longest.length){ longest = mySplitInput[i].toUpperCase(); existing= mySplitInput[i]; } }; var content = document.createTextNode(myInput.replace(existing,longest)); myOutput.appendChild(content); }); 
 <input type="input" id="input"> <button id="capitalize">capitalize</button> <div id="output"></div> 

一个更简单的解决方案!

var capitalize = document.getElementById('capitalize');
var myOutput = document.getElementById('output');
var myInput;

capitalize.addEventListener('click',function(){
    myInput = document.getElementById('input').value;

    mySplitInput = myInput.split(' ');

    var longest='';
    var newString= '';
    for(var i = 0 ; i < mySplitInput.length; i++){
        if( mySplitInput[i].length > longest.length){
            longest = mySplitInput[i].toUpperCase();
            if(myInput.includes(mySplitInput[i])){
               newString = myInput.replace(mySplitInput[i], longest);
        }
    };

    var content = document.createTextNode(newString);
    myOutput.appendChild(content);

});

您可以在此处删除一些变量和一些检查,但这完全取决于您。

尝试这个:

var longest=''; var index =0;
for(var i = 0 ; i < mySplitInput.length; i++){
if( mySplitInput[i].length > longest.length){
 longest = mySplitInput[i].toUpperCase();
 index = i;
 } 
};

var sentence =longest;
for(i=index-1;i >=0; i--){
 if(mySplitInput[i] === '.')
  break;
 sentence=mySplitInput[i] + " "+sentence;
}
for(i=index+1;i < mySplitInput.length; i++){
 if(mySplitInput[i] === '.')
  break;
 sentence+=" "+mySplitInput[i];
}
sentence += '.';

我添加了一个index变量以跟踪longest单词的索引,然后使用for循环重新创建该句子for循环旨在从最长单词的索引前后移动,直到找到一个'。'(句点)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM