Найдите элемент в json — используя библиотеку подчеркивания или другим способом

#javascript #arrays #json #object #underscore.js

#javascript #массивы #json #объект #underscore.js

Вопрос:

Я хочу найти g:id объект в приведенном ниже массиве объектов

Если мой g:id похож "g:id": "121"

Я могу найти элемент, подобный

 var item = _.findWhere(obj, {'g:id': '121'});
  

Но то, что у меня есть, "g:id": ["121"] похоже на массив. Как я могу это найти?

Вот мой массив объектов.

 [
  {
    "g:id": [
      "121"
    ],
    "g:item_group_id": [
      "90461"
    ]
  },
  {
    "g:id": [
      "129"
    ],
    "g:item_group_id": [
      "90462"
    ]
  }
]
  

Я пробовал так var item = _.findWhere(jsonXML, {'g:id'.[0]: '121'}); , но это недопустимо.

Как я могу это сделать с помощью underscore.js или любым другим способом?

Комментарии:

1. могли бы вы "g:id": ["121", "129"] ?

Ответ №1:

Вы можете использовать Array.find() с деструктурированием, чтобы получить g:id значение из массива:

 const arr = [{"g:id":["121"],"g:item_group_id":["90461"]},{"g:id":["129"],"g:item_group_id":["90462"]}]

const result = arr.find(({ 'g:id': [gid] }) => gid === '121')

console.log(result)  

Другой вариант — использовать Array.includes() , чтобы увидеть, содержит ли массив значение (обязательно, если массив может содержать более одного значения):

 const arr = [{"g:id":["121"],"g:item_group_id":["90461"]},{"g:id":["129"],"g:item_group_id":["90462"]}]

const result = arr.find(({ 'g:id': gid }) => gid.includes('121'))

console.log(result)  

Комментарии:

1. Это сработало как шарм, спасибо, принимаю ответ еще через 7 минут 🙂