请帮忙;我试图解决这个问题:
编写一个带有一系列名称并祝贺它们的函数。确保使用_.reduce作为函数的一部分。
输入:
['Steve', 'Sally', 'George', 'Gina']
输出:
'Congratulations Steve, Sally, George, Gina!'
这是我到目前为止所做的,但不起作用:
var myArray = _.reduce(['Steve', 'Sally', 'George', 'Gina'], function(current, end) {
return 'Congratulations' + current + end;
});
答案 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!"