代码之家  ›  专栏  ›  技术社区  ›  Siva Ganesh

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

  •  1
  • Siva Ganesh  · 技术社区  · 6 年前

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

    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 回复  |  直到 6 年前
        1
  •  3
  •   mplungjan Gvidas    6 年前

    非常简单:

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

    注意:如果你已经发布了一个数据示例,我们可能会找到一个地图,它将在一行

        2
  •  2
  •   Luis felipe De jesus Munoz    6 年前

    你可以用 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("; ")
    )
        3
  •  1
  •   Ivan Jeffrey Zhao    6 年前

    我建议你用 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);