javascript - 如果另一个数组元素比它长,则替换该数组元素

标签 javascript arrays loops

我正在尝试编写一个名称检查器,其中最终输出将输出数组中的所有名称,并在末尾显示一个统计数据,说明数组中最长的名称有多少个字符。这是我到目前为止所拥有的。虽然我不知道从这里去哪里,但它不起作用。

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'];

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 />');
        document.getElementById('output').innerHTML = output;
        i++;
    }
    return (output);
}

最佳答案

您实际上将每个名称与数组中的下一个名称进行比较。您甚至没有比较字符串的长度。

要获得最长的名称,您需要有一个变量来保存该名称。使用空字符串初始化它,并将这个longestName 与数组中的每个名称进行比较。如果较长,则将变量替换为当前名称。

<小时/>
  • 您不必使用 () 包围作业的右侧
  • 您可以使用简单的 for 循环来迭代数组。你将有条件停止并且索引在同一行
  • 您有一个 return 语句,但在 processArray() 中似乎不是必需的

var arrNameList = ['John', 'Lenny'];
var arrNameListLonger = [];

function addName() {
  var custname = document.getElementById('custname').value;
  arrNameList.push(custname);
}

function processArray() {
  var longestName = '';
  var output = 'Total names in array is: ' + arrNameList.length + '<br />';
  for (var i = 0, l = arrNameList.length; i < l; i++) {
    output += arrNameList[i] + '<br/>';
    if(arrNameList[i].length > longestName.length){
      longestName = arrNameList[i];
    }
  }
  output += "The longest name is " + longestName;
  document.getElementById("output").innerHTML = output;
  return output;
}
<input id="custname" />
<button onclick="addName()">Add</button>
<button onclick="processArray()">Process</button>
<div id="output"></div>

这是使用 ES6 的代码的另一个版本

var arrNameList = ['John', 'Lenny'];

function addName() {
  var custname = document.getElementById('custname').value;
  arrNameList.push(custname);
}

function processArray() {
  let output = `Total names in array : ${arrNameList.length}<br/>`;
  let longestName = arrNameList.reduce((a, b) => a.length > b.length ? a : b);
  output += arrNameList.join('<br/>');
  output += `<br/>Longest name is ${longestName}`;
  document.getElementById("output").innerHTML = output;

  return output;
}
<input id="custname" />
<button onclick="addName()">Add</button>
<button onclick="processArray()">Process</button>
<div id="output"></div>

关于javascript - 如果另一个数组元素比它长,则替换该数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43752447/

相关文章:

javascript - for 循环将 javascript 变量设置为 php 变量

javascript - 加快setInterval

javascript - react-bootstrap 导入不正确

javascript - 迭代 json 时未定义

java - 在Java中,试图打印一个整数中有多少位数字平均分为整个整数

javascript - Javascript 中的高级数组和循环

javascript - 在Javascript中推送两个带有键值的数组

Python - numpy 二维数组太长并且打印很奇怪?

c - 使用数组进行错误检查

c - 动态分配的二维数组