Ale*_*her 12 javascript arrays string
如果我在Javascript中有一个看起来像的数组
searchComponents = ['element1', 'element2', 'element3'];
Run Code Online (Sandbox Code Playgroud)
将它变成如下句子的必要逻辑是什么:
"element1,element2和element3"
同样,如果只有两个元素,它应该如下:
"element1和element2"
等等等等.我被卡住了.
Dav*_*mas 19
简单的解决方案:
function arrayToSentence (arr) {
var last = arr.pop();
return arr.join(', ') + ' and ' + last;
}
console.log(arrayToSentence(['one','two','three']));
Run Code Online (Sandbox Code Playgroud)
还有一个稍微复杂/荒谬的解决方案(因为谁不喜欢傻,偶尔......):
function arrayToSentence (arr) {
var len = arr.length;
return arr.reduce(function(a,b,c){
return a + (c - 1 === length ? ', ' : ' and ') + b;
});
}
console.log(arrayToSentence(['one','two','three']));
Run Code Online (Sandbox Code Playgroud)
参考文献:
the*_*fer 17
function toSentence(arr) {
return arr.slice(0, -2).join(', ') +
(arr.slice(0, -2).length ? ', ' : '') +
arr.slice(-2).join(' and ');
}
Run Code Online (Sandbox Code Playgroud)
用法
toSentence([1])
Run Code Online (Sandbox Code Playgroud)
1
toSentence([1, 2])
Run Code Online (Sandbox Code Playgroud)
1和2
toSentence([1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
1,2和3
toSentence([1, 2, 3, 4, 5, 6])
Run Code Online (Sandbox Code Playgroud)
1,2,3,4,5和6
这是单行:
const arrayToSentence = (a) => [a.slice(0, -1).join(', '), a.pop()].filter(w => w !== '').join(' and ');
console.log(arrayToSentence(['foo', 'bar', 'baz']));
console.log(arrayToSentence(['foo', 'bar']));
console.log(arrayToSentence(['foo']));
console.log(arrayToSentence([]));
Run Code Online (Sandbox Code Playgroud)
小智 5
迟到的答案,但这是我的尝试。相对简单、不可变的参数,适用于 0-N 项。
const toListSentence = (arr) => arr.length < 3 ?
arr.join(' and ') :
`${arr.slice(0, -1).join(', ')}, and ${arr[arr.length - 1]}`;
console.log(toListSentence([]));
console.log(toListSentence(['apple']));
console.log(toListSentence(['apple', 'banana']));
console.log(toListSentence(['apple', 'banana', 'peach']));
Run Code Online (Sandbox Code Playgroud)