我有这个数组:
row = [ "one", "two", "three", "four", "five", "six" ]
我想用以下内容进行迭代:
row.each(function(key, value){ doStuff(key); });
但我想在同一次迭代中抓住“一个”和“两个”以及之后的“两个”和“三个”等。
这样我想使用jsPlumb将每个关键元素相互连接起来,以创建一种“训练”元素。
我每次都可以手动询问row[x+1]
(如果你知道我的意思),但我想知道是否有.each
或自定义函数的参数来实现这一点,所以我甚至可以同时抓住3把钥匙......
所以我可以这样做:
row.eachTwo(function(key, value){ doStuff(key[0], key[1]); });
答案 0 :(得分:2)
正如您所见there。您无法使用函数.each
执行此操作。最好的方法是自己实施
答案 1 :(得分:1)
如果您对一次只处理两个值感到满意,我猜你可能会滥用数组的reduce
方法:
["one", "two", "three"].reduce(function(value1, value2) {
doSomething(value1, value2);
return value2;
});
答案 2 :(得分:1)
您可以创建自己的.eachTwo()
功能
jQuery.fn.eachTwo = function(fn)
{
var self = this;
return this.each(function(key, el)
{
if (self.hasOwnProperty(key+1))
fn.call(this,self[key],self[key+1],el)
});
};
var row = [ "one", "two", "three", "four", "five", "six" ];
$(row).eachTwo(function(i,j){
console.log(i+" "+j);
});
答案 3 :(得分:0)
所以我想我会这样做:
oldKey = "one";
row.each(function(key, value){
if (key == oldKey)
{
console.error("SAME");
}
else
{
jsPlumb.connect({
source: key,
target: oldKey,
anchor:"Continuous",
});
}
oldKey = key;
});
只是我只需要用key == oldKey
捕获第一个副本,但我正在寻找一种更简单,更优雅的方式,.next()
似乎很简单,但是不行在数组或简单对象..