[英]why I am getting undefined result with for loop function?
为什么这段代码返回未定义,我找不到原因
function findShort(s){
let splitted = s.split(' ');
let result = splitted[0].length ;
let looped
for (var i=0 ; i++ ; i<splitted.length){
looped = splitted[i].length;
if (looped < result) {return looped}else {return result }}
};
console.log(findShort("bitcoin take over the world maybe who knows perhaps"));
我应该得到最小字数
您的for循环condition
和increment
反:
for (var i=0 ; i++ ; i<splitted.length){ ...
相反,应为:
for (var i = 0; i < splitted.length; i++) { ...
您还必须修复循环代码,因为它会在内部if
语句的两个分支中返回,这意味着将仅运行一次迭代。
如果要返回最小单词的长度,请执行以下操作:
function findShort(s) { let splitted = s.split(' '); let result = splitted[0].length; for (let i = 0; i < splitted.length; i++) { const looped = splitted[i].length; if (looped < result) { result = looped; } } return result; }; console.log(findShort("bitcoin take over the world maybe who knows perhaps"));
或更短一些,使用Array.prototype.reduce() :
function findShortest(s) { return s.split(/\\s+/).reduce((out, x) => x.length < out ? x.length : out, s.length); }; console.log(findShortest('bitcoin take over the world maybe who knows perhaps'));
您的for循环实现是错误的,应该是:
for (var i=0; i<splitted.length; i++)
for loop
以及for loop
中的代码, condition
和increment
顺序在您中是错误的,
仅当您在所有情况下都有return
,它才会检查第一个元素。
这是正确的
function findShort(s) { let splitted = s.split(' '); let result = splitted[0].length; let looped for (var i = 0; i < splitted.length; i++) { looped = splitted[i].length; if (looped < result) { result = looped } } return result; }; console.log(findShort("bitcoin take over the world maybe who knows perhaps"));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.