【发布时间】:2016-05-26 14:03:57
【问题描述】:
我在将参数传递给 javascript array.prototype.findIndex(callback[, thisArg]) API 时遇到问题。 javascript文档指定可以传递一个参数,但我没有运气。 这是API参考Array.prototype.findIndex()
我在 API 中看到了这种语法:
arr.findIndex(callback[, thisArg])
这是我当前的实现,但我不喜欢使用全局创建的变量实现它的方式,它不是易于测试的代码。
var vm = this; //angular context
//List of objects
vm.someList = [{storeId: "1", name:"Carmel", quantity:"25", orderNumber:"12345"},
{storeId: "2", name:"Chocolate", quantity:"25", orderNumber:"23456"},
{storeId: "3", name:"Vanilla", quantity:"25", orderNumber:"34567"},
{storeId: "4", name:"Cinnamon", quantity:"25", orderNumber:"45678"}];
//List of items marked with priority
vm.priorityList = [{storeId: "3", name:"Vanilla", quantity:"25", orderNumber:"34567", priority: "true"}];
//For loop finds index of criteria to perform operation on someList[i] element
for(var i =0; i < vm.priorityList.length; i++){
//itemToFind created in global scope.
vm.itemToFind = vm.priorityList[i];
var index = vm.someList.findIndex(findPriorityIndex);
//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 提到参数将在回调中被引用为 this,并且我已经在回调函数中进行了这样的调整。
vm.someList.findIndex(findPriorityIndex[, vm.priorityList[i]]);
vm.someList.findIndex(findPriorityIndex(vm.priorityList[i]));
vm.someList.findIndex([findPriorityIndex, vm.priorityList[i]]);
如果有人能提供有关如何将参数传递给回调函数的任何信息,我将不胜感激。
【问题讨论】:
标签: javascript arrays angularjs