为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕勒3428872 2021-04-09 18:15:05
为什么这段代码返回未定义,我找不到原因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"));我应该得到最小字数
查看完整描述

3 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

您的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'));


查看完整回答
反对 回复 2021-04-22
?
慕桂英546537

TA贡献1848条经验 获得超10个赞

令condition和increment 是错误的,你for loop还有循环内的代码,


仅当您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"));


查看完整回答
反对 回复 2021-04-22
?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

您的for循环实现是错误的,应该是:

for (var i=0; i<splitted.length; i++)


查看完整回答
反对 回复 2021-04-22
  • 3 回答
  • 0 关注
  • 244 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信