跳至正文
首页 » 博客 » How to locate a particular object in a JavaScript Array

How to locate a particular object in a JavaScript Array

您是否遇到过在给定对象数组中查找特定对象的要求?在这篇文章中,我们将探索在JavaScript数组中查找特定对象的各种方法。让我们假设我们有一个数组,如下面的清单所示,我们需要找到一个id为 “4” 的对象是否存在:

var任务 = [{'Id': '1','Title': 'Go to Market 99 ','Status': 'done' },{'Id': '2','Title': 'Email to manager','Status': 'pending' },{'Id': '3''Title': '推送代码到github ', 'Status': 'done' },{'Id': '4','Title': 'Go for running','Status': 'done' },{'Id': '5','Title': “去看电影”,'状态': “挂起”},];

为了搜索一个特定的对象,我们将使用数组原型find的方法。这将返回给定条件下的值,否则返回 ‘undefined’。它需要两个参数,一个必需的回调函数和一个可选对象,该对象将在回调函数内设置为this的值。

  1. 将为数组的每个元素调用回调函数,直到特定元素的给定条件不为真。
  2. 一个对象,它将是的值在回调函数中是一个可选参数,如果未传递,则该值将设置为未定义在回调函数中。

find方法的回调函数参数有三个参数:

  1. 元素: 当前元素正在处理的数组
  2. 索引: 当前元素的索引被处理
  3. 数组: 数组上的find方法被调用

假设我们有一个回调函数,如下面的清单所示。它将打印当前元素,元素的索引和数组:

函数CallbackFunctionToFindTaskById (元素,索引,数组) {console.log(element) // 打印元素正在处理console.log(index) // 打印元素索引处理console.log(array) // 打印数组,find方法被调用}

如何查找方法的工作?

  • JavaScript find方法将为数组的每个元素执行回调函数。因此,如果数组中有5个元素,回调函数将被执行五次。
  • 当JavaScript find方法找到特定元素的true标准时,它将中断回调函数的执行。
  • 如果给定的条件对于元素为true,则JavaScript find方法将返回该特定元素,并且不会为其余元素执行回调函数。
  • 如果任何元素的条件都不为true,则JavaScript find方法将返回undefined。
  • JavaScript find方法不会为未设置或已删除的索引执行回调函数。
  • JavaScript find方法总是执行带有三个参数的回调函数: element、index、array。

让我们看一些使用find方法的例子!

找到一个对象在一个固定的标准

我们有一个tasks数组,如下面的清单所示:

var任务 = [{'Id': '1','Title': 'Go to Market 99 ','Status': 'done' },{'Id': '2','Title': 'Email to manager','Status': 'pending' },{'Id': '3''Title': '推送代码到github ', 'Status': 'done' },{'Id': '4','Title': 'Go for running','Status': 'done' },{'Id': '5','Title': “去看电影”,'状态': “挂起”},];

我们想找到一个id为 “4” 的对象。我们可以这样做,如下面的清单所示:

函数CallbackFunctionToFindTaskById (任务) {        返回task.Id=== '4';}    var task = tasks.find(CallbackFunctionToFindTaskById);console.log(JSON.stringify(task));

在上面的清单中,我们在tasks数组的find方法中传递回调函数callbackfunctofintofindtaskbyid。回调函数的第一个参数始终表示元素参数。这里的任务是回调函数内表示元素。因此,任务表示当前正在处理的元素。

在回调函数中,我们正在检查当前任务的Id,如果它等于4,则返回任务。在这种情况下,标准固定在回调函数内。

查找一个对象的条件传递给回调函数

在前面的示例中,我们有一个固定的条件,它返回一个id为 ‘4’ 的对象。但是,可能有一个要求,我们可能希望在调用回调函数时传递标准。我们可以在回调函数中传递一个对象作为this的值。让我们再次考虑相同的任务数组,如下所示

var任务 = [{'Id': '1','Title': 'Go to Market 99 ','Status': 'done' },{'Id': '2','Title': 'Email to manager','Status': 'pending' },{'Id': '3''Title': '推送代码到github ', 'Status': 'done' },{'Id': '4','Title': 'Go for running','Status': 'done' },{'Id': '5','Title': “去看电影”,'状态': “挂起”},];

接下来,让我们创建一个回调函数FindTaskById,如下面的清单所示:

函数FindTaskById(task) {console.log(  );}

正如你所注意到的,我们在回调函数中打印了 “thism” 的值。接下来,我们将在tasks数组的find方法中传递FindByTask回调函数,如下面的清单所示:

var task = tasks.find(FindTaskById,[ '4','67' ]);

在这种情况下,此内部回调函数的值已设置为具有两个值的对象: 4和67。在控制台中,您应该得到如下所示的输出:

this的值打印5次,因为tasks数组中有5个元素。要返回Id设置为4的对象,我们需要修改回调函数,如下面的清单所示

函数FindTaskById(task) {        if (task.Id ===  [0 ]) {            返回任务;}}    var task = tasks.find(FindTaskById, ['4','67' ]);console.log(JSON.stringify(task));

在回调函数中,我们传递这个对象的值,第一个属性设置为4。因此检查任务是否。id等于此 [0] 或不将返回id为4的对象。

结论

在这篇文章中,我们了解了JavaScript数组find方法,以及回调函数的各种选项。更好地理解find方法对于成为一名更高效的JavaScript开发人员至关重要,希望您喜欢阅读!</p