繁体   English   中英

为什么用for循环功能会得到未定义的结果?

[英]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循环conditionincrement反:

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中的代码, conditionincrement顺序在您中是错误的,

仅当您在所有情况下都有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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM