У меня есть 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 ={amp}gt; x.coordinates === arrayToBeFound); 

Я продолжаю получать неопределенные, но это существует. Любая помощь?

Я думаю, что это самый простой способ

 let selectedParkingSpot = parkingSpots.find(x ={amp}gt; x.coordinates[0] === arrayToBeFound[0] {amp}amp;{amp}amp; x.coordinates[1] === arrayToBeFound[1]); 

Вы можете использовать ответы, публикуемые здесь, мне они нравятся больше, за исключением тех случаев, когда вы собираетесь добавлять значения в этот массив или выполнять сравнения между другими массивами и / или объектами или если вам не важно порядок вашего массива.

В противном случае вы можете использовать isEqual от Lodash для сравнения объектов по их значениям.

Вам необходимо сравнить два массива, сравнив каждый элемент первого массива с соответствующим элементом другого массива. Непосредственное сравнение массива с другим массивом никогда не будет работать — они всегда будут разными, потому что JS сравнивает массивы (объекты) по их ссылке. Только если обе ссылки указывают на один и тот же массив, они будут равны. Однако примитивы сравниваются по значению.

 let selectedParkingSpot = parkingSpots.find(x ={amp}gt; x.coordinates[0] === arrayToBeFound[0] {amp}amp;{amp}amp; x.coordinates[1] === arrayToBeFound[1]); 

Вы не можете сравнивать 2 массива, но если вы их упорядочите, это сработает.

 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)={amp}gt;{ 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) 

Причина, по которой вы получили undefined, заключается в том, что сравнение x.coordinates == arrayToBeFound возвращает false, x.coordinates == arrayToBeFound find не возвращает ничего, а так как selectedParkingSpot не содержит значения, он будет неопределенным.

FUBAR

новый участник этого сайта. Будьте внимательны, спрашивая разъяснения, комментируя и отвечая. Проверьте наш

Правила поведения

,