📌  相关文章
📜  如何在打字稿中查找对象数组中的属性索引(1)

📅  最后修改于: 2023-12-03 15:38:39.890000             🧑  作者: Mango

如何在打字稿中查找对象数组中的属性索引

如果我们需要在Javascript中查找对象数组中的属性索引,可以使用Array.prototype.findIndex()函数。这个函数接受一个函数作为参数,该函数将被应用于数组中的每个元素,并返回第一个符合条件的元素的索引。如果没有符合条件的元素,则返回-1。

语法
arr.findIndex(callback(currentValue[, index[, array]])[, thisArg])

参数解释:

  • callback: 用来测试每个元素的函数。它可以接受三个参数:
    • currentValue: 当前被测试的元素。
    • index: 当前被测试的元素的索引。
    • array: 数组本身。
  • thisArg: 可选。执行callback时使用的this对象。
示例

比如我们有一个对象数组,包含多个对象,每个对象都有id和name属性。我们需要查找具有指定id值的对象的索引。可以这样实现:

const users = [
  { id: 1, name: 'Alice' },
  { id: 2, name: 'Bob' },
  { id: 3, name: 'Charlie' },
  { id: 4, name: 'David' }
];

const id = 3;

const index = users.findIndex((user) => user.id === id);

console.log(index); // 输出 2

在这个例子中,我们定义了一个id变量,它的值为3,我们使用findIndex()方法查找具有这个id值的对象的索引。我们传递一个回调函数,回调函数接受一个user参数(即数组中的每个元素),回调函数返回true时,findIndex()会返回当前元素的索引。

在本例中,我们将回调函数定义为:(user) => user.id === id

回调函数检查每个元素的id值是否等于指定的id变量。 如果我们没有找到具有这个id的用户,findIndex()将返回-1。

注意事项
  • findIndex()该方法在调用前,不需要创建新的额外数组作为参数传入该方法中。
  • findIndex() 返回的索引始终是第一个符合条件的元素的索引。
  • 如果你只需要检查数组中是否存在符合条件的元素,可以使用Array.prototype.includes()函数。
  • 如果需要查找多个符合条件的元素,可以使用Array.prototype.filter()函数。