Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery在foreach循环期间从数组中删除元素_Jquery_For Loop_Foreach - Fatal编程技术网

jquery在foreach循环期间从数组中删除元素

jquery在foreach循环期间从数组中删除元素,jquery,for-loop,foreach,Jquery,For Loop,Foreach,我想在数组中查找一个项,如果我找到了它,我想删除它,然后跳出循环。这就是我所拥有的,但它只跳回到第二个$的开头 var tempArray = dataArray; $.each(users, function(i, val) { var name = val.name; // loop over each obj and match $.each(tempArray, function(k, kval) { if(name === kval.username){

我想在数组中查找一个项,如果我找到了它,我想删除它,然后跳出循环。这就是我所拥有的,但它只跳回到第二个$的开头

var tempArray = dataArray;

$.each(users, function(i, val) {
    var name = val.name;
// loop over each obj and match
$.each(tempArray, function(k, kval) {
   if(name === kval.username){
        tempArray.splice(k, 1);
    return;
   }
    });
});         

如何跳回第一个循环的开始,使它开始在nxt名称上迭代?谢谢

尝试在第二个循环中返回false

return false;

尝试在第二个循环中返回false

return false;

通过使回调函数返回false,我们可以在特定迭代中中断$.each循环。返回非false与for循环中的continue语句相同;它将立即跳到下一个迭代


通过使回调函数返回false,我们可以在特定迭代中中断$.each循环。返回非false与for循环中的continue语句相同;它将立即跳到下一个迭代


Grep只会Grep您想要的值,而放弃您不想要的值

var persons = peopleArray;
$.each( users, function ( ii, user ) {
    persons = jQuery.grep( persons , function ( person ) {
        return ( person.userName !== user.name );
    } );
} );
或javascript数组fn{map,filter}:

var persons= [{name: "tom", age: 22 }, { name: "jerry", age: 23 }, { name: "XXX", age: 24 }]
, bads = [{ name: "XXX", pets: 9 }, { name: "YYY", pets: 6 }];

var badnames = bads.map(function(r){ return r.name });
alert( persons.filter( function(r) {
    return badnames.indexOf( r.name ) !== 0
} ).map( function ( r )    {
    return r.name
} ) );
EcmaScript 6 使用缩写lambda'=>',您可以

var badnames = bads.map(r=>r.name );
alert( persons.filter( r=> badnames.indexOf( r.name ) !== 0 ).map(r=>r.name));

结果tom,jerry

Grep只会Grep你想要的值,而丢弃你不想要的值

var persons = peopleArray;
$.each( users, function ( ii, user ) {
    persons = jQuery.grep( persons , function ( person ) {
        return ( person.userName !== user.name );
    } );
} );
或javascript数组fn{map,filter}:

var persons= [{name: "tom", age: 22 }, { name: "jerry", age: 23 }, { name: "XXX", age: 24 }]
, bads = [{ name: "XXX", pets: 9 }, { name: "YYY", pets: 6 }];

var badnames = bads.map(function(r){ return r.name });
alert( persons.filter( function(r) {
    return badnames.indexOf( r.name ) !== 0
} ).map( function ( r )    {
    return r.name
} ) );
EcmaScript 6 使用缩写lambda'=>',您可以

var badnames = bads.map(r=>r.name );
alert( persons.filter( r=> badnames.indexOf( r.name ) !== 0 ).map(r=>r.name));

结果tom,jerry

但是如果你不想打破循环,只想从循环中删除项[i],因为它满足一个条件,然后继续你的.each循环怎么办。文档中没有提到这一点,我看到一些开发人员只是简单地使用return;在一个条件语句中,$this将从循环中删除。但是如果您不想中断循环,只需从循环中删除项[i],因为它满足一个条件,然后继续执行.each循环,该怎么办。文档中没有提到这一点,我看到一些开发人员只是简单地使用return;在要从循环中删除的$this的条件语句中。