我正在尝试合并条目列表:
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
然后,我将在需要的地方使用它。