Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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$.each()反向/反向迭代_Jquery_Each - Fatal编程技术网

jQuery$.each()反向/反向迭代

jQuery$.each()反向/反向迭代,jquery,each,Jquery,Each,我正在使用$.each()解析数组,但在数组中,我使用.splice()方法,所以我需要反向迭代。可能吗 var store = [...]; //... var rules = [...]; //... $.each(store, function(index, element) { // This loop needs to iterate backward $.each(rules, function(index2, rule) { if (element.id =

我正在使用
$.each()
解析数组,但在数组中,我使用
.splice()
方法,所以我需要反向迭代。可能吗

var store = [...];
//...
var rules = [...];
//...
$.each(store, function(index, element) { // This loop needs to iterate backward
    $.each(rules, function(index2, rule) {
        if (element.id == rule.id) {
            store.splice(index, 1);
        }
    });
});
警告:

  • 我不想反转数组,这不会是相同的行为
  • 另外,我知道我可以使用
    进行
    ,我只想知道使用
    $是否可以实现

您可以使用$。每个,但您必须减少索引变量(index,index2),就像您所做的那样

$.each(store.reverse(), function(index, element) { // This loop iterate backward
[...]
这行得通,和这篇文章一样。但这里的要点是,您将此应用于
存储

$。每个()
本身不能向后迭代,因为它没有修饰符。它的输入来自选择器。可以将其转换为数组。然后
$。each()
按索引(0,1,2,…等等)向前迭代

反向流动的唯一方法是
Array.reverse()
,或者找到一个执行此操作的迭代器循环。您还可以构建一个符合您的目的的递归函数。但所有这些选项都超出了
$的限制。each()

以下是迭代循环中需要考虑的选项:

->用于循环(反向)

->循环时(反向)

var X=9,Y=X;
while (--Y) {
    console.log(Y);
    //will only stop at 1 since while cannot return a falsy value
    //0 is considered a falsy value, and is nullified from the loop
}

逆向数组迭代考虑的选项:

->
Array.reverse().forEach()

var value = 10;
for (var i = value; i; i--){
    console.log(i);
    //bonus
    //return back to a proper flow is to add the whole value it
    console.log(value + i);
}
正如我已故的导师曾经说过的那样,
从石头上雕刻大象的方法不止一种。
这个网站之所以存在,是因为很多人都有创造性的方法来解决问题。不幸的是,
$中没有任何内置的东西。each()
将独立向后运行,因此人们求助于其他方法(上面提到了其中一些方法)。很抱歉,对于这个问题,这不是一个令人满意的“是”答案,但希望能解释为什么
$。each()
只能向前循环。如果这是我自己制定的解决方案,它将是:

var loopy=(value,output)=>{
    for(var i = value; i; i--){
        output.call(this,{
           index:{
               forward:()=>value-i,
               reverse:()=>i-1
           },
           count:{
               forward:()=>1+value-1,
               reverse:()=>i
           }
        })
    }
}

loopy(10, i=>console.log( i.index.forward() ))

上面的函数允许您选择整个计数和索引计数。这类似于
Array.forEach()
的工作方式,只是每次迭代都要输出一个对象及其值。我使用类似于此的函数来获取对象的值、键和索引。

可能重复Nop,我看过这篇文章,它在数组上使用了
.reverse()
。请仔细阅读问题。请看这篇文章:要正确使用
.splice
,您必须向后迭代。和
$。each()
基本上不是。为什么你可以用一个简单的
来进行
循环?我可以,就像我在问题中写的那样。我终于做到了。^^^但我想知道使用
$是否可行。each()