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

时间:2018-06-15 13:50:40

标签: javascript jquery

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

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

3 个答案:

答案 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方法,这里有以下方法:

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

  2. 然后映射它(.map

  3. 最后将其加入字符串(.join

  4. 以下是代码:

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