Javascript 如何在对象中查找数组
我有parkingSpots,它是一个包含坐标属性的对象数组,也是一个数组 e、 g指数0:Javascript 如何在对象中查找数组,javascript,Javascript,我有parkingSpots,它是一个包含坐标属性的对象数组,也是一个数组 e、 g指数0: _id: "5e03c83459d0c115589067ba" capacity: 2 description: "safas" title: "aa" coordinates: (2) [-34.193705512748686, 150.2320126953125] 我正试图找到找到数组的对象。我尝试了这个解决方案和其他许多解决方案,但仍然不起作用 let arrayToBeFound =
_id: "5e03c83459d0c115589067ba"
capacity: 2
description: "safas"
title: "aa"
coordinates: (2) [-34.193705512748686, 150.2320126953125]
我正试图找到找到数组的对象。我尝试了这个解决方案和其他许多解决方案,但仍然不起作用
let arrayToBeFound = [e.latLng.lat(), e.latLng.lng()];
let selectedParkingSpot = parkingSpots.find(x => x.coordinates === arrayToBeFound);
我一直没有定义,但它存在。有什么帮助吗?您需要通过将第一个数组的每个项目与另一个数组的相应项目进行比较来比较两个数组。直接将一个数组与另一个数组进行比较是行不通的——它们总是不同的,因为JS通过引用来比较数组对象。只有当两个引用都指向同一个数组时,它们才会相等。但是,基本体是按值进行比较的
让selectedParkingSpot=parkingSpots.findx=>x.coordinates[0]==arrayToBeFound[0]&&x.coordinates[1]==arrayToBeFound[1] 我认为这是最简单的方法
let selectedParkingSpot = parkingSpots.find(x => x.coordinates[0] === arrayToBeFound[0] && x.coordinates[1] === arrayToBeFound[1]);
您可以使用这里发布的答案,我更喜欢它们,除非您要向该数组添加值,或者在其他数组和/或对象之间执行比较,或者不关心数组的顺序
否则,您可以使用按值比较对象。您无法比较两个数组,但如果将它们字符串化,则可以进行比较
const data = [
{
_id: "5e03c83459d0c115589067ba",
capacity: 2,
description: "safas",
title: "aa",
coordinates: [-34.193705512748686, 150.2320126953125]
}
]
const arrayToBeFound = [-34.193705512748686, 150.2320126953125]
let spot = data.find((ele)=>{
return JSON.stringify(ele.coordinates) === JSON.stringify(arrayToBeFound)
})
// returns the object
console.log(spot)
// returns false
console.log(data[0].coordinates == arrayToBeFound)
//returns true
console.log(typeof data[0].coordinates === typeof arrayToBeFound)
未定义的原因是x.coordinates==arrayToBeFound的比较返回false,因此find不会返回任何内容,并且由于selectedParkingSpot不包含任何值,因此将未定义它。
$document.readyfunction{
函数arraysEquala,b{
如果a==b,则返回true;
如果a==null | | b==null,则返回false;
如果a.length!=b.length返回false;
对于变量i=0;i