0

我有这个数组:

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]); });
4

4 回答 4

2

如您所见你不能用 function 做到这一点.each。最好的方法是自己实现

于 2012-08-10T10:02:28.777 回答
1

如果您对一次只处理两个值感到满意,我想您可能会滥用reduceArray 的方法:

​["one", "two", "three"].reduce(function(value1, value2) {
  doSomething(value1, value2);
  return value2;
});​​​
于 2012-08-10T10:11:10.410 回答
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);
});​

演示

于 2012-08-10T11:20:47.097 回答
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()看起来不错而且简单,但不适用于数组或简单对象。

于 2012-08-10T10:21:23.007 回答