如何使用 jquery 识别 foreach 循环的最后一个索引



这是我的每个函数,我如何识别每个循环的最后一个索引

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

很简单:

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(";"));

注意:如果您发布了数据示例,我们可能会找到一张地图,可以在一行中获取它

您可以使用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("; ")
)

我建议你使用Array的方法,方法如下:

  1. 首先过滤(.filter(数组

  2. 然后映射它 (.map(

  3. 最后将其连接成一个字符串 (.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);

最新更新