Javascript _.reduce()练习

时间:2015-02-21 09:43:24

标签: javascript reduce

请帮忙;我试图解决这个问题:

编写一个带有一系列名称并祝贺它们的函数。确保使用_.reduce作为函数的一部分。

输入:

['Steve', 'Sally', 'George', 'Gina']

输出:

'Congratulations Steve, Sally, George, Gina!'

这是我到目前为止所做的,但不起作用:

var myArray = _.reduce(['Steve', 'Sally', 'George', 'Gina'], function(current, end) {
return 'Congratulations' + current + end;
});

5 个答案:

答案 0 :(得分:3)

你可以这样做:

var myArray = 'Congratulations ' + _.reduce(['Steve', 'Sally', 'George', 'Gina'], function(current, end) {
    return current + ', ' + end;
});

// "Congratulations Steve, Sally, George, Gina"

但是reduce不是最方便的工具,简单的join感觉更自然:

'Congratulations ' + ['Steve', 'Sally', 'George', 'Gina'].join(', ');

答案 1 :(得分:1)

这是我的解决方案,它使用reduce函数的所有参数。

var people = ["Steve", "Sally", "George", "Gina"];

people.reduce(
  function(prev, curr, currIndex, array){
    if(currIndex === array.length - 1){
      return prev + curr + "!";
    } else{
      return prev + curr + ", ";
    }
  }, "Congratulations ");

答案 2 :(得分:1)

['Steve', 'Sally', 'George', 'Gina'].reduce(
    (a, b, i) => a + " " + b + (i <= this.length + 1 ? "," : "!"),
    "Congratulations"
)

答案 3 :(得分:0)

在这里你可以获得完整的reduce

['Steve', 'Sally', 'George', 'Gina'].reduce( function(o,n, i, a){ var e=(i===(a.length-1))?"!":","; return o+n+e; }, "Congratulations ")

1)你必须使用“祝贺”作为第一个元素reduce(f, initial)mdn

2)你有两种情况:a)没有达到最后一个元素,所以追加“,”b)否则追加“!”。 这是通过检查当前索引到数组i===(a.length-1)

的长度来完成的

答案 4 :(得分:0)

// Input data
const names = ['Steve', 'Sally', 'George', 'Gina']

// Do the reduce
result = names.reduce((carry, name) => {
  return carry + " " + name
}, "Congratulations") + "!"

// Print-out the result
console.log(result)  // "Congratulations Steve Sally George Gina!"