Underscore.js 是一个 JavaScript 工具库,提供了很多实用的函数和工具。其中之一是 findWhere
函数,该函数可以根据一个对象的属性值来查找数组中的某个元素。但是,如果你想要根据 ID 来查找元素呢?本文将介绍如何使用 Underscore.js 实现根据 ID 查找元素的功能。
问题描述
假设有一个包含若干对象的数组,每个对象都有一个唯一的 ID 属性。现在我们想要根据某个 ID 值来查找数组中对应的对象。
var users = [ {id: 1, name: 'Alice'}, {id: 2, name: 'Bob'}, {id: 3, name: 'Charlie'} ];
我们希望能够像这样使用 Underscore.js:
var user = _.findById(users, 2); console.log(user); // {id: 2, name: 'Bob'}
但是,findById
函数并不存在于 Underscore.js 中,我们需要自己实现它。
解决方案
我们可以通过编写一个回调函数来实现根据 ID 查找元素的功能。这个回调函数需要接受一个参数,即数组中的每个元素,然后返回一个布尔值,表示当前元素是否满足条件。具体实现如下:
function findById(id) { return function(user) { return user.id === id; }; }
现在,我们可以使用 _.find
函数来查找数组中满足条件的元素了。_.find
函数接受两个参数:一个数组和一个回调函数。它会依次对数组中的每个元素调用回调函数,直到找到满足条件的元素为止。
var user = _.find(users, findById(2)); console.log(user); // {id: 2, name: 'Bob'}
完整代码
下面是完整的代码示例:
-- -------------------- ---- ------- --- ----- - - ---- -- ----- --------- ---- -- ----- ------- ---- -- ----- ---------- -- -------- ------------ - ------ -------------- - ------ ------- --- --- -- - --- ---- - ------------- ------------- ------------------ -- ---- -- ----- ------
总结
Underscore.js 提供了很多实用的函数和工具,但是有时候可能需要自己编写一些回调函数来扩展其功能。本文介绍了如何通过编写一个回调函数来实现根据 ID 查找元素的功能,并使用 Underscore.js 中的 _.find
函数进行查找。希望本文能够对你有所帮助!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/30884