这是我的每个函数,如何识别每个循环的最后一个索引
var mailtest = '';
$.each(data.getEmail, function (i) {
$.each(data.getEmail[i], function (key, val) {
if(key == 'personal_email'){
mailtest += val+';';
}
});
});
alert(mailtest);
因为我得到这样的输出,在此我不想; 在最后
输出:
test@gmail.com; test1@gmail.com; test2@gmail.com; test3@gmail.com;
我想要的输出:
test@gmail.com; test1@gmail.com; test2@gmail.com; test3@gmail.com
答案 0 :(得分:3)
很简单:
var mailtest = [];
$.each(data.getEmail, function (i) {
$.each(data.getEmail[i], function (key, val) {
if(key == 'personal_email'){
mailtest.push(val)
}
});
});
console.log(mailtest.join(";"));
注意:如果你发布了一个数据示例,我们可能会找到一个可以在一行中获取数据的地图
答案 1 :(得分:2)
您可以使用join()
。
只要你的数据结构类似于这个
var data = {
getEmail: [
{
personal_email: 'test@gmail.com'
},
{
personal_email: 'test1@gmail.com'
},
{
personal_email: 'test2@gmail.com'
},
]
}
console.log(
data.getEmail.map(a=>a.personal_email).join("; ")
)

答案 2 :(得分:1)
我建议您使用Array方法,这里有以下方法:
首先过滤(.filter
)数组
然后映射它(.map
)
最后将其加入字符串(.join
)
以下是代码:
var mailtest = '';
$.each(data.getEmail, function(i) {
mailtest += data.getEmail[i]
.filter((key, val) => (key == 'personal_email'))
.map((key, val) => val)
.join(';')
});
alert(mailtest);
或者您可以删除字符串的最后一个字符:
mailtest.substring(0, mailtest.length - 1);