首页 > 解决方案 > 如何在对象中找到数组

问题描述

我有parkingSpots一个对象数组,其中包含一个坐标属性,它也是一个数组。

例如索引 0:

_id: "5e03c83459d0c115589067ba"
capacity: 2
description: "safas"
title: "aa"
coordinates: (2) [-34.193705512748686, 150.2320126953125]

我正在尝试找到具有arrayToBeFound. 我尝试了这个解决方案和许多其他解决方案,但仍然无法正常工作。

    let arrayToBeFound = [e.latLng.lat(), e.latLng.lng()];
    let selectedParkingSpot = parkingSpots.find(x => x.coordinates === arrayToBeFound);

我一直不确定,但它存在。有什么帮助吗?

标签: javascript

解决方案


您需要通过将第一个数组的每个项与另一个数组的相应项进行比较来比较两个数组。直接将一个数组与另一个数组进行比较永远不会奏效——它们总是不同的,因为 JS 通过引用来比较数组(对象)。只有当两个引用都指向同一个数组时,它们才会相等。然而,原语是按值比较的。

let selectedParkingSpot = parkingSpots.find(x => x.coordinates[0] === arrayToBeFound[0] &&  x.coordinates[1] === arrayToBeFound[1]);


推荐阅读