繁体   English   中英

如何检查新创建的 object 是否与阵列内的 object 相同

[英]How to check if a newly created object is identical to an object inside of an array

我知道新声明的相同 object 仍然是不同的 object。 如何检查“点”数组是否包含与新 object 相同的任何 object

const Points = [{ "latitude": 47.590868, "longitude": -122.336729 },
               { "latitude": 47.601604, "longitude": -122.336042 },
               { "latitude": 47.608490, "longitude": -122.342410 },]

navigator.geolocation.getCurrentPosition((position) => {
                var loc = [position.coords.latitude, position.coords.longitude]
                var formattedLocation = {"latitude": loc[0], "longitude": loc[1]}
                
                if(Points.includes(formattedLocation)){  //PROBLEM IS HERE.
                    console.log(Points.includes(formattedLocation)) // will always return false
                    // I WANT THIS TO BE TRUE IF formattedLocation object is similar to any OBJECT inside 
                    of Points array
                }    
            });

您可以使用JSON.stringify() ,它将您的 object 转换为字符串,然后您可以比较它

 const obj1 = { "latitude": 47.590868, "longitude": -122.336729 } const obj2 = { "latitude": 47.590868, "longitude": -122.336729 } console.log(obj1 === obj2) // false console.log(JSON.stringify(obj1) === JSON.stringify(obj2)) // true

您不能直接比较两个对象。 .includes()无法检查数组中的对象是否具有相同的 object。 您可以循环通过Points数组来查找匹配项。

var inLocation = false;
Points.forEach(point=>{
  if (point.latitude == formattedLocation.latitude && point.longitude == formattedLocation.longitude) inLocation = true;
})
if (inLocation) {
    // Do your stuffs
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM