<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.5.1/jquery.min.js" />
let myArray = [...Array(10000)].map((x,i)=> ({'id':`${i}`, 'foo':`bar_${i}`}));
const mapK = new Map( myArray.map(el => [el.id, el]) ); // For precalculated solution
const mapL = {}; myArray.forEach(el => mapL[el.id]=el); // For precalculated solution
let test = f => {
for(let i=0; i<10; i++) {
f(myArray,'555555'); // not exist
f(myArray,'666666'); // not exist
f(myArray,'777777'); // not exist
f(myArray,'888888'); // not exist
f(myArray,'999999'); // not exist
}
}
function A(arr, id) {
return arr.find(o=> o.id==id);
}
test(A);
function B(arr, id) {
let idx= arr.findIndex(o=> o.id==id);
return arr[idx];
}
test(B);
function C(arr, id) {
return arr.filter(o=> o.id==id)[0];
}
test(C);
function D(arr, id) {
return arr.reduce((a, b) => (a.id==id && a) || (b.id == id && b));
}
test(D);
function E(arr, id) {
for (var i = 0; i < arr.length; i++) if (arr[i].id==id) return arr[i];
return null;
}
test(E);
function F(arr, id) {
var retObj ={};
$.each(arr, (index, obj) => {
if (obj.id == id) {
retObj = obj;
return false;
}
});
return retObj;
}
test(F);
function G(arr, id) {
return $.grep(arr, e=> e.id == id )[0];
}
test(G);
function H(arr, id) {
return $.map(myArray, function(val) {
return val.id == id ? val : null;
})[0];
}
test(H);
function I(arr, id) {
return _.find(arr, o => o.id==id);
}
test(I);
let J = (()=>{
let cache = new Map();
return function J(arr,id,el=null) {
return cache.get(id) || (el=arr.find(o=> o.id==id), cache.set(id,el), el);
}
})();
test(J);
function K(arr, id) {
return mapK.get(id)
}
test(K);
function L(arr, id) {
return mapL[id];
}
test(L);