Javascript 如果另一个数组元素比它长,请替换该数组元素
我正在尝试编写一个名称检查器,最终输出将输出一个数组中的所有名称,最后还有一个stat,说明数组中最长的名称有多少个字符。这就是我目前所拥有的。这不管用,尽管我不知道从这里到哪里去Javascript 如果另一个数组元素比它长,请替换该数组元素,javascript,arrays,loops,Javascript,Arrays,Loops,我正在尝试编写一个名称检查器,最终输出将输出一个数组中的所有名称,最后还有一个stat,说明数组中最长的名称有多少个字符。这就是我目前所拥有的。这不管用,尽管我不知道从这里到哪里去 var arrNameList = ['John', 'Lenny']; var arrNameListLonger = []; function addName() { var custname = document.getElementById('custname').value; arrNam
var arrNameList = ['John', 'Lenny'];
var arrNameListLonger = [];
function addName() {
var custname = document.getElementById('custname').value;
arrNameList.push(custname);
}
function processArray() {
var i = 0;
var output = ('Total names in array is: ' + arrNameList.length + '<br />');
while (i < arrNameList.length) {
output += (arrNameList[i] + '<br />');
if (arrNameList[i] > arrNameList[i + 1]) {
arrNameListLonger[0] = (arrNameList[i]);
output += ('The longest name in the array is ' + arrNameListLonger[0].length + ' characters');
}
document.getElementById('output').innerHTML = output;
i++;
}
return (output);
}
var arrNameList=['John','Lenny'];
var arrNameListLonger=[];
函数addName(){
var custname=document.getElementById('custname').value;
arrNameList.push(custname);
}
函数processArray(){
var i=0;
变量输出=('数组中的总名称为:'+arrNameList.length+'
');
while(i ';
if(arrNameList[i]>arrNameList[i+1]){
arrNameListLonger[0]=(arrNameList[i]);
输出+=('数组中最长的名称为'+arrNameListLonger[0].length+'characters');
}
document.getElementById('output')。innerHTML=output;
i++;
}
返回(输出);
}
为了比较/指导,这里是我代码的第一阶段(它只输出名称)
var arrNameList=['John','Lenny'];
函数addName(){
var custname=document.getElementById('custname').value;
arrNameList.push(custname);
}
函数processArray(){
var i=0;
变量输出=('数组中的总名称为:'+arrNameList.length+'
');
while(i ';
document.getElementById('output')。innerHTML=output;
i++;
}
返回(输出);
}
首先,从你的代码来看,你似乎没有在任何地方调用你的函数,也许你的问题中缺少了那部分代码。在任何情况下,我都会这样做:
function process_array() {
let longest = ''
arrNameList.forEach((name) => {
if (name.length > longest.length) {
longest = name
}
})
document.getElementById('output').innerHTML = 'The names are ' + arrNameList.join(', ') + ' and the longest is ' + longest
}
您可以使用遍历数组。我在这个函数中所做的只是替换最长单词的一个值。我使用的另一个技巧是
编辑
查找数组中最长元素的更有效方法是:
实际上是将数组中的每个名称与下一个名称进行比较。您甚至没有比较字符串的长度 要获得最长的名称,您需要有一个包含此名称的变量。使用空字符串初始化它,并将这个最长的名称与数组中的每个名称进行比较。如果更长,则用当前名称替换变量
- 你不必用
来包围作业的右侧()
- 您可以使用一个简单的
循环来迭代数组。您将具有停止的条件,并且索引在同一行上for
- 您有一个
语句,它在return
processArray()中似乎是不必要的
var arrNameList=['John','Lenny'];
var arrNameListLonger=[];
函数addName(){
var custname=document.getElementById('custname').value;
arrNameList.push(custname);
}
函数processArray(){
var longestName='';
变量输出='数组中的总名称为:'+arrNameList.length+'
';
for(var i=0,l=arrNameList.length;i ';
if(arrNameList[i].length>longestName.length){
longestName=arrNameList[i];
}
}
输出+=“最长名称为”+最长名称;
document.getElementById(“输出”).innerHTML=output;
返回输出;
}
添加
过程
您可以使用Array.prototype.reduce
获得数组中最长的字符串
这只是返回缩减中最长字符串的长度
var arrNameList=['John','Lenny'];
console.log(
arrNameList.reduce((最长,name)=>Math.max(最长,name.length),0)
)
您的代码有点错误,因为您比较的是两个字符串,而不是字符串的长度
替换此代码
var arrNameList = ['John', 'Lenny'];
var arrNameListLonger = [];
function addName() {
var custname = document.getElementById('custname').value;
arrNameList.push(custname);
}
function processArray() {
var i = 0;
var output = ('Total names in array is: ' + arrNameList.length + '<br />');
while (i < arrNameList.length) {
output += (arrNameList[i] + '<br />');
if (arrNameList[i] > arrNameList[i + 1]) {
arrNameListLonger[0] = (arrNameList[i]);
output += ('The longest name in the array is ' + arrNameListLonger[0].length + ' characters');
}
document.getElementById('output').innerHTML = output;
i++;
}
return (output);
}
**by**
var arrNameList = ['John', 'Lenny'];
var arrNameListLonger = [];
function processArray() {
var i = 0;
var output = ('Total names in array is: ' + arrNameList.length + '<br />');
while (i < arrNameList.length) {
output += (arrNameList[i] + '<br />');
if(i<arrNameList.length-1){
if (arrNameList[i].length > arrNameList[i + 1].length) {
arrNameListLonger[0] = (arrNameList[i]);
}
else{
arrNameListLonger[0] = (arrNameList[i+1]);
}
}
i++;
}
console.log(arrNameListLonger[0].length);
return (output);
}
var arrNameList=['John','Lenny'];
var arrNameListLonger=[];
函数addName(){
var custname=document.getElementById('custname').value;
arrNameList.push(custname);
}
函数processArray(){
var i=0;
变量输出=('数组中的总名称为:'+arrNameList.length+'
');
while(i ';
if(arrNameList[i]>arrNameList[i+1]){
arrNameListLonger[0]=(arrNameList[i]);
输出+=('数组中最长的名称为'+arrNameListLonger[0].length+'characters');
}
document.getElementById('output')。innerHTML=output;
i++;
}
返回(输出);
}
**借**
var arrNameList=['John','Lenny'];
var arrNameListLonger=[];
函数processArray(){
var i=0;
变量输出=('数组中的总名称为:'+arrNameList.length+'
');
while(i ';
if(i arrNameList[i+1].长度){
arrNameListLonger[0]=(arrNameList[i]);
}
否则{
arrNameListLonger[0]=(arrNameList[i+1]);
}
}
i++;
}
console.log(arrNameListLonger[0].length);
返回(输出);
}
没有必要在()
中包装作业的右侧等。很抱歉,我的函数是用HTML按钮调用的。实际上,只调用addName()函数。其他一切都发生在js上
let longest = arrNameList.sort((a, b) => {
return b.length - a.length;
})[0];
var arrNameList = ['John', 'Lenny'];
var arrNameListLonger = [];
function addName() {
var custname = document.getElementById('custname').value;
arrNameList.push(custname);
}
function processArray() {
var i = 0;
var output = ('Total names in array is: ' + arrNameList.length + '<br />');
while (i < arrNameList.length) {
output += (arrNameList[i] + '<br />');
if (arrNameList[i] > arrNameList[i + 1]) {
arrNameListLonger[0] = (arrNameList[i]);
output += ('The longest name in the array is ' + arrNameListLonger[0].length + ' characters');
}
document.getElementById('output').innerHTML = output;
i++;
}
return (output);
}
**by**
var arrNameList = ['John', 'Lenny'];
var arrNameListLonger = [];
function processArray() {
var i = 0;
var output = ('Total names in array is: ' + arrNameList.length + '<br />');
while (i < arrNameList.length) {
output += (arrNameList[i] + '<br />');
if(i<arrNameList.length-1){
if (arrNameList[i].length > arrNameList[i + 1].length) {
arrNameListLonger[0] = (arrNameList[i]);
}
else{
arrNameListLonger[0] = (arrNameList[i+1]);
}
}
i++;
}
console.log(arrNameListLonger[0].length);
return (output);
}