javascript减少功能

时间:2018-09-29 17:28:10

标签: javascript function reduce

我是javascript的新手,并且只有一门入门级的Java大学课程。我正在在线上学习JS的课程,但遇到了麻烦。我应该创建一个解析字符串并找到最长单词的函数。 我发现了问题,但不明白为什么以下函数给了我一个未定义的问题。当我尝试加深对语言的理解时,任何帮助都将非常有用。

var statement = 'This is an example string'
//undefined

var result = statement.split(' ').reduce(function(acc, cur) {
  if (acc.length > cur.length) {
    return acc;
  } else {
    return cur;
  }
});

console.log(result);  //"example"

function longest(string) {
  string.split(' ').reduce(function(acc, cur) {
    if (acc.length > cur.length) {
      return acc;
    } else {
      return cur;
    }
  });
}

result = longest(statement);
console.log(result);  //undefined

4 个答案:

答案 0 :(得分:1)

您的函数应该返回一些信息。如果您不“返回” JavaScript中的任何值,它将返回“未定义”

在您的问题中,您的函数有一个reduce方法,该方法将在“最长”函数内返回一个值。但是,“最长”函数应返回该值。这样,当您调用此函数时,该值将可用

function longest(string){ 
   return string.split('').reduce(function(acc,cur){
       if (acc.length > cur.length){
          return acc;
       } else { 
          return cur; 
       } 
   }); 
 }

答案 1 :(得分:0)

需要添加该函数的返回值。

var statement = 'This is an example string'
//undefined

function longest(string) {
  var result = string.split(' ').reduce(function(acc, cur) {
    if (acc.length > cur.length) {
      return acc;
    } else {
      return cur;
    }
  });
  return result;
}

result = longest(statement);
console.log(result);

答案 2 :(得分:0)

获得相同结果的另一种简单方法是将数组拆分为单词,然后按单词长度的降序依次sort……然后选择第一个元素。

var statement = 'This is an example string'
var result = statement.split(' ').sort((x,y) => y.length - x.length)[0]

console.log(result)

答案 3 :(得分:0)

您没有从函数中返回值。 JavaScript中有一些特殊类型的函数,称为“箭头函数”,可以避免使用return语句。但是,它仅适用于单行语句。  可以在here中找到更多有关箭头功能的信息。

这是我的解决方案的样子:

const statement = 'This is an example string';
const longest = string => 
  string.split(' ').reduce((acc, cur) => acc.length > cur.length? acc: cur);
console.log(longest(statement));

相关问题