Nếu bạn muốn duy trì dấu gạch dưới để chức năng vị ngữ của bạn có thể linh hoạt hơn, đây là 2 ý tưởng.
Phương pháp 1
Vì vị từ for _.find
nhận cả giá trị và chỉ mục của một phần tử, bạn có thể sử dụng hiệu ứng phụ để truy xuất chỉ mục, như sau:
var idx;
_.find(tv, function(voteItem, voteIdx){
if(voteItem.id == voteID){ idx = voteIdx; return true;};
});
Phương pháp 2
Nhìn vào nguồn gạch dưới, đây là cách _.find
được triển khai:
_.find = _.detect = function(obj, predicate, context) {
var result;
any(obj, function(value, index, list) {
if (predicate.call(context, value, index, list)) {
result = value;
return true;
}
});
return result;
};
Để biến đây thành một findIndex
hàm, chỉ cần thay thế dòng result = value;
bằng result = index;
Đây là ý tưởng giống như phương pháp đầu tiên. Tôi bao gồm nó để chỉ ra rằng gạch dưới cũng sử dụng tác dụng phụ để triển khai _.find
.