Javascript 在映射函数中生成字符串的多个条件
我存储的阵列如下所示:Javascript 在映射函数中生成字符串的多个条件,javascript,loops,dictionary,ecmascript-6,Javascript,Loops,Dictionary,Ecmascript 6,我存储的阵列如下所示: let arr = [ { name: "James", age: 24 }, name: "Patrick", age: 20 }, { name: "John", age: 23 } ]; 我正在尝试获取一个字符串,该字符串如下所示: Hi James, Patrick and John ^ ^ | | Comma A
let arr = [
{
name: "James",
age: 24
},
name: "Patrick",
age: 20
},
{
name: "John",
age: 23
}
];
我正在尝试获取一个字符串,该字符串如下所示:
Hi James, Patrick and John
^ ^
| |
Comma And
在每个名称后面添加一个,
(逗号),但不要在最后一个名称之前添加。最后一个单词前面的单词和。我正在使用地图:
arr.map((l,i) =>
<span key={i}>
{i < arr.length - 1 ? `${l.name}, ` :
i === arr.length - 1 ? `and ${l.name}.` : ''}
</span>)
有没有一个美丽而简单的方法可以得到这样的结果?还有一个纯函数,可以处理数组中所有数量的名称?最好使用ES6。。谢谢 您可以使用reduce()
来执行此操作
让arr=[{
姓名:“詹姆斯”,
年龄:24
}, {
姓名:“帕特里克”,
年龄:20
}, {
姓名:“约翰”,
年龄:23
}];
var结果=arr.REDUCT(函数(r,e,i){
如果((i+1)=(arr.length-1)){
r+=e.name;
}如果((i+1)!=阵列长度){
r+=e.name+',';
}否则{
r+='和'+e.name;
}
返回r;
}"嗨",;
console.log(result)
您可以使用reduce()
执行此操作
让arr=[{
姓名:“詹姆斯”,
年龄:24
}, {
姓名:“帕特里克”,
年龄:20
}, {
姓名:“约翰”,
年龄:23
}];
var结果=arr.REDUCT(函数(r,e,i){
如果((i+1)=(arr.length-1)){
r+=e.name;
}如果((i+1)!=阵列长度){
r+=e.name+',';
}否则{
r+='和'+e.name;
}
返回r;
}"嗨",;
console.log(结果)
您可以这样做
arr.map((l,i) =>
if (i <arr.length-1) {
if(i === arr.length-2) {
<span key={i}>
{`${l.name} `}
</span>)
} else {
<span key={i}>
{`${l.name}, `}
</span>)
}
} else {
<span key={i}>
`and ${l.name}.`
</span>)
}
arr.map((l,i)=>
如果(i你能做到这一点
arr.map((l,i) =>
if (i <arr.length-1) {
if(i === arr.length-2) {
<span key={i}>
{`${l.name} `}
</span>)
} else {
<span key={i}>
{`${l.name}, `}
</span>)
}
} else {
<span key={i}>
`and ${l.name}.`
</span>)
}
arr.map((l,i)=>
如果(i您可以尝试使用以下代码
arr.map((l,i) =>
<span key={i}>
{i < arr.length - 1 && i !== arr.length - 2 ? `${l.name}, ` : ''}
{i === arr.length - 2 ? `${l.name} ` : ''}
{i === arr.length - 1 ? `and ${l.name}.` : ''}
</span>)
arr.map((l,i)=>
{i
您可以尝试使用以下代码
arr.map((l,i) =>
<span key={i}>
{i < arr.length - 1 && i !== arr.length - 2 ? `${l.name}, ` : ''}
{i === arr.length - 2 ? `${l.name} ` : ''}
{i === arr.length - 1 ? `and ${l.name}.` : ''}
</span>)
arr.map((l,i)=>
{i
我想你在找
const names = arr.map((l,i) => html`<span key="${i}">${l.name}</span`);
const last = names.pop();
return names.length ? names.join(", ") + " and " + last : last;
constnames=arr.map((l,i)=>html`${l.name}我想您正在寻找
const names = arr.map((l,i) => html`<span key="${i}">${l.name}</span`);
const last = names.pop();
return names.length ? names.join(", ") + " and " + last : last;
const names=arr.map((l,i)=>html`${l.name}为什么要省略牛津逗号??(为什么要省略牛津逗号;(最终条件i===arr.length-1
将始终是true
,因此您可以省去它,而:“
最终条件i===arr.length-1
将始终是true
,因此您可以省去它和:”
我认为您应该在名称之前添加两个分隔符,或者两者都添加在名称之后,当前代码有点难理解。我认为您应该在名称之前添加两个分隔符,或者在名称之后添加两个分隔符,当前代码有点难理解。