หากคุณต้องการอยู่กับขีดล่างเพื่อให้ฟังก์ชันเพรดิเคตของคุณมีความยืดหยุ่นมากขึ้นนี่คือ 2 แนวคิด
วิธีที่ 1
ตั้งแต่เพรดิเคตสำหรับ _.find
รับทั้งค่าและดัชนีขององค์ประกอบคุณสามารถใช้ผลข้างเคียงเพื่อดึงดัชนีได้ดังนี้:
var idx;
_.find(tv, function(voteItem, voteIdx){
if(voteItem.id == voteID){ idx = voteIdx; return true;};
});
วิธีที่ 2
ดูที่แหล่งที่มาขีดล่างนี่คือวิธี_.find
การใช้งาน:
_.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;
};
ในการทำให้findIndex
ฟังก์ชันนี้เป็นเพียงแค่แทนที่บรรทัดresult = value;
ด้วยresult = index;
นี่เป็นแนวคิดเดียวกับวิธีแรก ฉันรวมไว้เพื่อชี้ให้เห็นว่าขีดล่างใช้ผลข้างเคียงในการนำไปใช้_.find
เช่นกัน