我正在尝试编写一个名称检查器,最终输出将输出数组中的所有名称,并在最后显示一个统计信息,该信息表明数组中最长的名称有多少个字符。到目前为止,这就是我所拥有的。它不起作用,尽管我不知道从这里去哪里。
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>