如果我的Javascript数组看起来像

searchComponents = ['element1', 'element2', 'element3'];

把它变成一个句子的必要逻辑是什么:

“element1,element2和element3”

同样,如果只有两个元素,则应显示为:

“element1和element2”

等等等等。我被困住了。

最佳答案

一种简单的解决方案:

function arrayToSentence (arr) {
    var last = arr.pop();
    return arr.join(', ') + ' and ' + last;
}

console.log(arrayToSentence(['one','two','three']));

JS Fiddle demo

还有一个稍微复杂/荒谬的解决方案(因为有时不喜欢傻的人):
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']));

JS Fiddle demo

引用文献:
  • Array.prototype.join()
  • Array.prototype.pop()
  • Array.prototype.reduce()
  • 09-12 08:38