Includes方法未检测到阵列中的现有项目

时间:2019-08-23 17:09:34

标签: javascript

如果该对象已存在于数组中,我正在尝试从该数组中删除该对象。我知道如何删除对象,但是我正在使用includes()方法来查找对象是否存在。我似乎无法正常工作。这是一些代码:

const sampleRange = [{from: 500, to: 600}, {from: 700, to: 800}]

const objectFromRange = sampleRange[0]

const objectRange = {from: 500, to: 600}

sampleRange.includes(objectFromRange) => true

sampleRange.includes(objectRange) => false

那么为什么一个sampleRange.includes出现在true而不是另一个出现在false呢?他们是同一个对象。

2 个答案:

答案 0 :(得分:5)

这是因为对象变量是对内存中某个位置的引用。这就是objectFromRange有效但objectRange不起作用的原因。 objectFromRange引用数组中内存的位置,而objectRange引用不引用。要执行您想做的事情,请使用Array.some()

sampleRange.some((range)=>range.from == 500 && range.to == 600)

答案 1 :(得分:1)

const objectRange = {from: 500, to: 600}在这一行中,您创建了对象的新实例,它与数组中的对象不同。