数组减少将无法使用长度1在给定情况下如何处理?

时间:2018-08-22 07:15:17

标签: javascript reduce

我确实有情况

let values = [{value: "one"}, {value: "two"}];
let joinedValues = values.reduce(function(p, n) {return `${p.value},
${n.value}`});

let values2 = [{value: "one"}];
let joinedValues2 = values2.reduce(function(p, n) {return `${p.value}, ${n.value}`});

console.log(joinedValues);
console.log(joinedValues2);

那个时候数组length > 1进行迭代并返回给我连接的值,但是当length === 1时它根本不会进行迭代并直接返回值对象。 因此,如何从上面的示例数组仅使用reduce 中获得逗号分隔的字符串。

注意: 我无法预测动态的初始值

1 个答案:

答案 0 :(得分:0)

您没有传递reduce的第二个参数。

代码应该像这样

let values = [{value: "one"}, {value: "two"}];
let joinedValues = values.reduce(function(p, n) {return `${p}, ${n.value}`}, '');

let values2 = [{value: "one"}];
let joinedValues2 = values2.reduce(function(p, n) {return `${p}, ${n.value}`}, '');

console.log(joinedValues);
console.log(joinedValues2);

和reduce中的函数接收2个参数。第一个用于上一个值,第二个用于当前值。