jQuery,使用逗号分隔打印多个值

时间:2018-11-28 20:35:18

标签: jquery

我有这样的json:

obj = [{"name":"Jim Smith","role":"Author"},{"name":"Julie Smith","role":"Author"}]

我想这样打印作者姓名:

<div class="authors">Authored by Jim Smith & Julie Smith</div>

我正在遍历这样的对象:

$.each( obj, function(k,v) {    
  $('.authors').append('<span>' + v.name + '</span>');
});

此输出

<div class="authors">Authored by Jim SmithJulie Smith</div>

理想情况下,解决方案还将考虑1、2和2+位作者,因此,如果有2位以上的作者,则只有最后一位作者的值带有&amp;前缀。

例如:如果有三位作者:Jim Smith, Julie Smith, & John Smith

请注意牛津逗号的用法。

我应该将其包装在if语句中吗?如何最好地遍历$ .each循环,同时跟踪返回的长度和哪个迭代处于活动状态?

1 个答案:

答案 0 :(得分:1)

一种实现此目的的方法是使用map()从初始对象数组构建名称数组。然后,您可以应用this answer中的逻辑以将值以在UI中显示所需的方式连接在一起。试试这个:

var arr = [{
  "name": "Jim Smith",
  "role": "Author"
}, {
  "name": "Julie Smith",
  "role": "Author"
}, {
  "name": "Foo Smith",
  "role": "Author"
}];

var names = arr.map(function(o) { return o.name; }).join(', ').replace(/,(?!.*,)/gmi, ' and');
$('.authors span').text(names);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="authors">Authored by <span></span></div>