我正在尝试合并条目列表:

var arry = ['Jane', 'John', 'Tim'];


您当然可以使用arry.join(', '),它会产生:

'Jane, John, Tim'


但是,如果我想要的话:

'Jane, John, and Tim'


我知道我可以使用for循环进行迭代并跟踪何时到达最后一个索引,然后使用一些if逻辑来处理此问题,但是我想知道是否有更简单的方法?

最佳答案

虽然您可以尝试使用slice,但最终会得到不想要的效果(例如,如果只有两个条目,则为"John, and Tim")。

我只是给自己一个功能来做很长一段路:

function oxfordCommaList(arry) {
    var rv;
    var last = arry[arry.length - 1];

    switch (arry.length) {
        case 0:
            rv = "";
            break;

        case 1:
            rv = last;
            break;

        case 2:
            rv = arry[0] + " and " + last;
            break;

        default:
            rv = arry.slice(0, -1).join(", ") + ", and " + last;
            break;
    }

    return rv;
}


Live Example | Source

然后,我将在需要的地方使用它。

09-25 17:30