2016-05-26 14 views
1

javacriptのarray.prototype.findIndex(callback [、thisArg])APIに引数を渡す際に問題があります。 JavaScriptのドキュメントでは、引数を渡すことができますが、私は運がなかったことを示しています。 これはArray.prototype.findIndex()引数をarray.prototype.findIndexに渡す(コールバック[、thisArg])

私はAPIで、この構文を参照してくださいAPIのリファレンスです:

arr.findIndex(callback[, thisArg]) 

これは私の現在の実装であるが、私はそれがeasiblyではありません、それは世界的に作成した変数を用いて実装されている方法が好きではありませんテストされたコード。

var vm = this; //angular context 
 
//List of objects 
 
vm.someList = [{storeId: "1", name:"Carmel", quantity:"25", orderNumber:"12345"}, 
 
\t \t  {storeId: "2", name:"Chocolate", quantity:"25", orderNumber:"23456"}, 
 
\t \t  {storeId: "3", name:"Vanilla", quantity:"25", orderNumber:"34567"}, 
 
\t \t  {storeId: "4", name:"Cinnamon", quantity:"25", orderNumber:"45678"}]; 
 
\t \t 
 
//List of items marked with priority 
 
vm.priorityList = [{storeId: "3", name:"Vanilla", quantity:"25", orderNumber:"34567", priority: "true"}]; 
 
\t \t 
 
//For loop finds index of criteria to perform operation on someList[i] element 
 
for(var i =0; i < vm.priorityList.length; i++){ 
 
\t //itemToFind created in global scope. 
 
     vm.itemToFind = vm.priorityList[i]; 
 
\t var index = vm.someList.findIndex(findPriorityIndex); 
 
\t //Don't worry about the operation being performed. 
 
    console.log(index); 
 
} 
 

 
//callback fn used 
 
function findPriorityIndex(element, index, array){ 
 
    return (element.storeId === vm.itemToFind.storeId 
 
     && element.orderNumber ===vm.itemToFind.orderNumber); 
 
}

私は、次の構文を使用してコールバックでthisArgとして使用する引数を渡すことを試みたが、すべては失敗しました。また、私はAPIがコールバック内でこの引数として参照されることを記述しており、コールバック関数でそのような調整を行っていることを認識しています。

vm.someList.findIndex(findPriorityIndex[, vm.priorityList[i]]); 
vm.someList.findIndex(findPriorityIndex(vm.priorityList[i])); 
vm.someList.findIndex([findPriorityIndex, vm.priorityList[i]]); 

誰かが引数をコールバック関数に渡す方法に関する情報を提供できる人は、私は大いに感謝します。

答えて

4

基本的には、コールバックにfindIndexのthisArgthisと設定されています。

for (var i = 0; i < vm.priorityList.length; i++) { 
    index = vm.someList.findIndex(findPriorityIndex, vm.priorityList[i]);´ 
    //         set thisArg ^^^^^^^^^^^^^^^^^^ 
    console.log(index); 
} 

// callback fn used 
function findPriorityIndex(element, index, array) { 
    return element.storeId === this.storeId && element.orderNumber === this.orderNumber; 
    //  access this here ^^^^        and ^^^^ 
} 
+0

私が正確に探していた答えです。私はなぜAPIが構文が別の方法であると言っているのだろうかと思う。 ? – TerNovi

+0

あなたは正しいです、それはちょっとミッドリーディングです。 –

+0

さて、正しい構文がわかってうれしいです。どうもありがとう! – TerNovi

関連する問題