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

时间:2017-10-29 12:16:34

标签: javascript

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



    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);
    
    });
    
&#13;
    
      <input type="input" id="input">
    	<button id="capitalize">capitalize</button>
    	<div id="output"></div>
&#13;
&#13;
&#13;

5 个答案:

答案 0 :(得分:1)

存储最长单词的索引以及单词本身。然后你可以用它的大写版本用该索引覆盖这个单词,并将拆分句子与空格粘合在一起。

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>

答案 1 :(得分:0)

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 indexOfLongest = 0;
  for(var i = 0 ; i < mySplitInput.length; i++){
    if( mySplitInput[i].length > longest.length){
      longest = mySplitInput[i].toUpperCase();
      indexOfLongest = i;
    }
  };
 
  mySplitInput[indexOfLongest] = longest;
  var outputSentence = mySplitInput.join(' ');
  myOutput.append(outputSentence);

});
<input type="input" id="input">
<button id="capitalize">capitalize</button>
<div id="output"></div>

答案 2 :(得分:0)

您还可以将现有的最长值放在变量中,并将其替换为大写的最长值。

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>

答案 3 :(得分:0)

更简单的解决方案!

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);

});

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

答案 4 :(得分:0)

试试这个:

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循环重新调整句子,这些循环旨在向前和向后遍历最长字的索引,直到找到'。'(句号)