反冲教程findIndex



在https://recoiljs.org/docs/basic-tutorial/atoms,它们使用
const index = todoList.findIndex((listItem) => listItem === item);以获取数组中对象的索引。代码有效,但我无法复制它,我总是得到-1的返回值。我以为你不能像那样直接比较物体
todoList类似于:

[{id: 0, text: 'item1', isComplete: false}, {id: 1, text: 'item2', isComplete: false}]

其中item{id: 0, text: 'item1', isComplete: false}

它们的使用逻辑如下:

const a = {};
const b = [];
b.push(a);
b.findIndex(el=>el===a); // 0

如果您自己定义列表:

[{id: 0, text: 'item1', isComplete: false}, {id: 1, text: 'item2', isComplete: false}]

您应该使用id || text || isComplete来查找索引,因为您没有指向要查找的对象的链接。关于对象比较的更多信息https://dmitripavlutin.com/how-to-compare-objects-in-javascript/

您想象===通过比较对象,而实际上它通过reference进行比较,请参见下文。

const todoList = [];
const item = {id: 0, text: 'item1', isComplete: false};
todoList.push(item);
// Attempt by reference, 0
console.log(todoList.findIndex((listItem) => listItem === item));
// Attempt by value, -1
console.log(todoList.findIndex((listItem) => listItem === {id: 0, text: 'item1', isComplete: false}));

相关内容

  • 没有找到相关文章

最新更新