Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/409.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如果另一个数组元素比它长,请替换该数组元素_Javascript_Arrays_Loops - Fatal编程技术网

Javascript 如果另一个数组元素比它长,请替换该数组元素

Javascript 如果另一个数组元素比它长,请替换该数组元素,javascript,arrays,loops,Javascript,Arrays,Loops,我正在尝试编写一个名称检查器,最终输出将输出一个数组中的所有名称,最后还有一个stat,说明数组中最长的名称有多少个字符。这就是我目前所拥有的。这不管用,尽管我不知道从这里到哪里去 var arrNameList = ['John', 'Lenny']; var arrNameListLonger = []; function addName() { var custname = document.getElementById('custname').value; arrNam

我正在尝试编写一个名称检查器,最终输出将输出一个数组中的所有名称,最后还有一个stat,说明数组中最长的名称有多少个字符。这就是我目前所拥有的。这不管用,尽管我不知道从这里到哪里去

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