2017-05-24 10 views
0

私は解法を探していますevery()関数を呼び出すか、それをcycleに置き換えてください。私はコマンドを使用しようとしました返信それは動作しませんでした。たぶん私は例外を作り、これでサイクルを止めようとするべきです。データ型jQuery rows.every()関数

このループを解除することはできますか?

この関数をcycleに置き換えることはできますか?ここで

はコードの例です:

table.rows().every(function (rowIdx, tableLoop, rowLoop) { 
 
    var data = this.data(); 
 
    // ... do something with data(), or this.node(), etc 
 
});

答えて

0

Array.prototype.everyはあなたが望むものとは異なることになります。

すべてのメソッドは、各要素の存在のために一度に提供するコールバック関数を実行しますコールバックが偽の値を返す場所が見つかるまで配列内に格納されます。そのような要素が見つかると、everyメソッドは直ちにfalseを返します。それ以外の場合、コールバックがすべての要素の真理値を返す場合、everyはtrueを返します。コールバックは、値が割り当てられた配列のインデックスに対してのみ呼び出されます。削除されたか、または値が割り当てられていない索引に対しては呼び出されません。

var tableRows = [1, 2, 3, 4, 5, "word"]; 
 
var tableRows2 = [1, 2, 3, 4, 5]; 
 

 
var everyTest = tableRows.every(function(currentValue, index, array) { 
 
    return (typeof currentValue == "number") 
 
}); 
 

 
var everyTest2 = tableRows2.every(function(currentValue, index, array) { 
 
    return (typeof currentValue == "number") 
 
}); 
 

 
console.log(everyTest); 
 
console.log(everyTest2);

おそらくArray.prototype.forEachを使用していました。悲しいことに、あなたのジレンマのように聞こえるthere is no way to break from a forEach short of throwing an exception

var tableRows = [1, 2, 3, 4, 5, "words"]; 
 

 
var forEachTest = tableRows.forEach(function(currentValue, index, array) { 
 
    console.log(currentValue); 
 
});

forEachbreakを持っていませんが、伝統的なforループはありません!ここで

var tableRows = [1, 2, 3, 4, 5, "words", 6, 7, 8]; 
 

 
for (var i = 0; i < tableRows.length; i++) { 
 
    var current = tableRows[i]; 
 
    if(typeof current != 'number') 
 
    break; 
 
    console.log(current); 
 
}

0

私のソリューションです:

function loopTableRows(team) { 
 
    var table = $('#myTable').DataTable(); 
 
    var numberOfRows = table.data().length; 
 
    
 
    for (var i = 0; i < numberOfRows; i++) { 
 
     //get data from row 
 
     var data = table.row(i).data(); 
 
     if (data[0] == team.id) { //test cell for value 
 
      return true; //break cycle 
 
     } 
 
    } 
 
    return false; 
 
}

関連する問題