如何检查 javascript 数组是否已包含特定数组

How can I check if javascript array already contains a specific array

我学习 Javascript 并阅读并理解 includes 如何测试数组中是否存在值。

当我有一个看起来像这样的项目数组时,我的问题就来了:

state = { focused: null, files: [] };:

图片显示如下:

当我添加一个新的newFile并且它是相同的它应该不会添加它但是评估,

if (newFile && !files.includes(newFile)) {.. 总是说 false 那么如何测试这个我是否必须测试 newFiles 中的各个值?

Array.includes 对数组或对象进行引用比较,因此您可以使用 Array.filter

if (newFile && newFile.filter(e => { /*Comparison logic */ }).length > 0) 

Array.includes 不会在对象之间进行深度比较,只会比较引用的浅层比较。这样,即使具有相同值的对象也会在测试中失败,因为它们具有不同的引用。

在您的情况下,您可以比较 id,它对于每个对象应该是唯一的。您可以使用 Array.every 检查所有值是否都通过了测试。这样您就可以检查每个文件 ID 是否与新文件 ID 不匹配:

if (newFile && files.every(({id}) => newFile.id !== id))