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);
}
});
});
警告:
- 我不想反转数组,这不会是相同的行为
- 另外,我知道我可以使用
,我只想知道使用进行
$是否可以实现
$.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()
。