即使我对值进行硬编码,includes()也会返回false

时间:2018-11-11 18:40:21

标签: javascript arrays

includes()函数通常工作得很好,但是在这种特定情况下,它总是返回false,我不知道为什么。我花了很多时间来确保它不仅仅是错字,而且我敢肯定这不是错字。

如果给定的值在数组中,我希望我的代码返回true。但是实际上,无论如何它都会返回false。

代码如下:

let array = [
    {
        x: 10,
        y: 500,
        width: 100,
        height: 50
    },
    {
        x: 100,
        y: 550,
        width: 150,
        height: 20
    }
];


if (
    array.includes({
        x: 10,
        y: 500,
        width: 100,
        height: 50
    })
) {
    console.log(true);
} else {
    console.log(false);
}

1 个答案:

答案 0 :(得分:2)

包括按引用比较对象。它不会对每个对象进行深入的比较。您可能需要使用.find并创建一个执行深度比较的函数。 lodash或类似的库可能会提供开箱即用的功能。