我有从数据库获取数据并在视图中显示的函数:
function GetUsers() {
let url = "/Home/GetUsers";
$.ajax({
type: 'GET',
url: url,
dataType: 'json',
success: function(data) {
console.dir(data);
for (var i = 0; i < data.length; ++i) {
$('#taskresult3').append('<b>' + data[i].UserName + "-" + data[i].RoleName + "," + '</b>');
}
}
});
}
它以逗号显示,但在最后Username+RoleName
之后添加了一个
逗号也是。据我所知,我需要获得for循环的最后一次迭代?我该如何解决这个问题?
答案 0 :(得分:10)
我通常会针对这种情况制作一个小技巧:
var separator = "";
for (var i = 0; i < data.length; ++i) {
$('#taskresult3').append(separator + '<b>' + data[i].UserName + "-" + data[i].RoleName + '</b>');
separator = ",";
}
答案 1 :(得分:6)
只需检查当前元素是否为最后一个元素,如果是,则不要添加逗号:
$('#taskresult3').append('<b>'+ data[i].UserName +"-"+ data[i].RoleName + (i === data.length - 1 ? "" : ",")+'</b>');
答案 2 :(得分:1)
不要为最后一个元素添加逗号。
for (var i = 0; i < data.length; ++i) {
if (i === data.length - 1)
$('#taskresult3').append('<b>' + data[i].UserName + "-" + data[i].RoleName '</b>');
else
$('#taskresult3').append('<b>' + data[i].UserName + "-" + data[i].RoleName + "," + '</b>');
}
在阵列上使用.join()
还有一种方法
var _html = [];
for (var i = 0; i < data.length; ++i) {
var _inhtml = '<b>' + data[i].UserName + "-" + data[i].RoleName+'</b>';
_html.push(_inhtml);
}
$('#taskresult3').append(_inhtml.join(","));
通过这种方式,您可以减少多次操作DOM的开销。
答案 3 :(得分:1)
您可以通过在数组中构建HTML,然后使用join()
来显示它来避免使用逗号并改进逻辑,如下所示:
success: function(data) {
var html = data.map(function(item) {
return data[i].UserName + ' - ' + data[i].RoleName;
});
$('#taskresult3').append(html.join(',');
}
另外,请记住<b>
标记的语义用法:
但是,您不应该使用
<b>
来设置文本样式;相反,您应该使用CSSfont-weight
属性来创建粗体文本。
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/b
我建议您将附加的HTML放在通过CSS应用font-weight: bold
的容器中。
答案 4 :(得分:1)
您可以使用map
和join
来解决此问题,而不是使用循环。
$('#taskresult3').append('<b>' + data.map(item => item.UserName + "-" + item.RoleName).join(',</b><b>') + '</b>')
map
会将数组转换为item.UserName + "-" + item.RoleName
数组,然后使用,</b><b>
将此数组连接在一起,然后丢失的最后一部分是第一个{{1} }}和最后一个<b>