我有一个允许的文件扩展名列表,可以上传到我的网站。
我用jQuery Validation plugin检查它们。
如果他们选择不受支持的扩展名,我会显示错误消息。
看起来像是
var msg = 'You may only upload files of type ' + allowedExt.join(', ');
显然这个列表看起来不太闪光。我希望它看起来更像人类可读。
有什么办法吗?
答案 0 :(得分:10)
执行answer posted by alex的更简单方法是使用.pop()
关闭最后一个元素:
var niceList = function(array, join, finalJoin) {
var arr = array.slice(0), last = arr.pop();
join = join || ', ';
finalJoin = finalJoin || ' and ';
return arr.join(join) + finalJoin + last;
};
答案 1 :(得分:5)
接受的答案不能很好地处理一个项目列表。
function niceList(array) {
if (!array || array.length == 0) return "";
var clone = array.slice(0);
return function build() {
if (clone.length == 1) return clone[0];
if (clone.length == 2) return clone[0] + ' and ' + clone[1];
return clone.shift() + ", " + build();
}();
}
答案 2 :(得分:4)
另一种方法。
考虑的案例:
......等等
function niceList(a) {
return [
a
/* Get all the elements except the last one.
* If there is just one element, get that
*/
.slice(0, a.length - 1 || 1)
/* Create a comma separated string from these elements */
.join(", ")
]
/* Process the last element (if there is one) and concat it
* with the processed first part.
*/
.concat(
a
/* Create a copy */
.slice()
/* Take the last element, if there is one */
.splice(-1, Number(a.length > 1))
)
/* Join the two processed parts */
.join(" and ");
}
答案 3 :(得分:2)
是的,你可以!
var niceList = function(array, join, finalJoin) {
join = join || ', ';
finalJoin = finalJoin || ' and ';
var length = array.length;
return array.slice(0, length - 1).join(join) + finalJoin + array[length - 1];
};
alert(niceList([a, b, c])); // 'a, b and c'
答案 4 :(得分:2)
因为我们显然提供了不同版本的alex答案,所以这里没有join
:
function niceList(array, join, final) {
return array.reduce(function (pv, cv, i, a) {
return pv + (i == a.length - 1 ? final : join) + cv;
});
};
不适用于旧浏览器等。
答案 5 :(得分:0)
我从字面上把你带到了一个实际的HTML列表中。
var extensions = ['html', 'txt', 'png', 'jpg'];
var extension_list = '<ul>';
for(i=0; i<extensions.length; i++)
{
extension_list += '<li>'+extensions[i]+'</li>';
}
extension_list += '<ul>';
var msg = '<p>Sorry, you can only upload the following extensions:</p>'+extension_list;