在我的程序中,给出了一个名称的哈希数组。我想返回一个由逗号分隔的名称列表格式的字符串,但最后两个名称除外,应该用&符号分隔。
例如
list([{ name: 'Bart' }, { name: 'Lisa' }, { name: 'Maggie' }]);
// returns 'Bart, Lisa & Maggie'
list([{ name: 'Bart' }, { name: 'Lisa' }]);
// returns 'Bart & Lisa'
list([{ name: 'Bart' }]);
// returns 'Bart'
list([]);
// returns ''
为此,我使用映射函数映射对象数组的值,并使用切片提取数组的最后两个值,然后使用toString
将其转换为字符串,然后使用split("&")
在最后两个元素之间添加与号,但我没有得到预期的输出。
代码:
function list(names){
let result = names.map(value => value.name);
return result.slice(-2).toString().split('&');
}
list([{name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'}]);
发布于 2018-10-21 07:03:53
您可以对数组中的最后一项执行pop
操作,使用逗号对其余项执行join
操作,然后在最后一项后面附加一个“与”符号。更新代码:
function list(names) {
if (names.length === 0) return '';
if (names.length === 1) return names[0].name;
let result = names.map(value => value.name);
let lastName = result.pop();
return result.join(', ') + ' & ' + lastName;
}
let string = list([{name: 'Bart'}, {name: 'Lisa'}, {name: 'Maggie'}]);
console.log(string);
https://stackoverflow.com/questions/52910787
复制相似问题