我正在存储一个如下所示的数组:
let arr = [
{
name: "James",
age: 24
},
name: "Patrick",
age: 20
},
{
name: "John",
age: 23
}
];
我正在尝试获取如下所示的字符串:
Hi James, Patrick and John
^ ^
| |
Comma And
在每个名称后添加一个 ,
(逗号),但不在最后一个名称之后。和单词 And
就在最后一个单词之前。我正在使用 map :
arr.map((l,i) =>
<span key={i}>
{i < arr.length - 1 ? `${l.name}, ` :
i === arr.length - 1 ? `and ${l.name}.` : ''}
</span>)
我得到:
James, Patrick, and John
^
|
This is Extra
有没有一种漂亮而简单的方法可以得到这样的结果?和一个纯函数并且可以处理数组中所有名称的函数?最好使用 ES6.. 谢谢!
最佳答案
你可以使用reduce()
来做到这一点
let arr = [{
name: "James",
age: 24
}, {
name: "Patrick",
age: 20
}, {
name: "John",
age: 23
}];
var result = arr.reduce(function(r, e, i) {
if ((i + 1) == (arr.length - 1)) {
r += e.name;
} else if ((i + 1) != arr.length) {
r += e.name + ', ';
} else {
r += ' and ' + e.name;
}
return r;
}, 'Hi ');
console.log(result)
关于javascript - 在 Map 函数中生成字符串的多个条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39192993/