Выполнить итерацию по объекту JSON и проверить, совпадает ли проанализированный запрос

#javascript #json #object #nuxt.js

#javascript #json #объект #nuxt.js

Вопрос:

Я использую Nuxt JS 2.4.5 и пытаюсь выполнить итерацию по импортированному объекту JSON, чтобы проверить, содержит ли он соответствие, основанное на предоставлении запроса в URL, например: mysite.com/page?id=TEST — где, если TEST он не найден в моем импортированном объекте JSON, тогда сделайте что-нибудь.

В настоящее время у меня настроен цикл foreach для выполнения итерации по моему объекту JSON, который импортирован правильно, похоже, ему не удается запустить мой код, если он не может найти то, что проанализировано.

Чтобы добавить контекст, вот фрагменты кода:

JSON

 {
  "id_1": "something here",
  "id_2": "something else here"
}
  

JS

 var iframe_settings = JSON.parse(localStorage.getItem('iframe_settings'));
this.iframe_settings = iframe_settings

for (var aff in this.affiliates) {
        if (this.affiliates.hasOwnProperty(aff)) {
          if (aff != this.iframe_settings.id) {
            // do something if ?id=X isn't found in JSON object
          }
        }
      }
  

Из приведенного выше цикла foreach и предоставленного JSON я пытаюсь выполнить цикл по моему объекту JSON и проверить, можно ли mysite.com/page?id=id_3 найти внутри объекта JSON, если это невозможно, то запустите код, в котором у меня есть // do something

Передача ?id=id_3 хранится в Localstorage через: localStorage.setItem('iframe_settings', JSON.stringify(this.$route.query)); но проблема не в этом, проблема в моем цикле foreach.

Если mysite.com/page?id=id_3 может быть найдено, например: id_2 тогда не следует запускать оператор if.

Редактировать

this.affiliates находится внутри data ()

 import AffiliatesFromJson from '~/static/affiliates/affiliates.json';

export default {
  data () {
    affiliates: AffiliatesFromJson
  }
}
  

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

1. что это.affiliates?

2. Не так много идей для итерации по объекту JSON ..?

3. this.affiliates импортирует фактический объект JSON из файла, я обновил приведенные выше фрагменты кода, см. Редактировать

4. Поскольку это объект, просто if ( !this.affiliates.hasOwnProperty( theID )) должно быть достаточно для проверки, чтобы узнать, что идентификатор не существует в this.affiliates . Если вы хотите использовать массив вместо объекта, то то же самое можно сделать с помощью .find( data => data.id === Идентификатор) . ( Хороший пример того, почему я предпочитаю массивы с фиксированными свойствами объекту, где ключом свойства является идентификатор. )

5. Спасибо @Shilly, у меня это сработало 🙂

Ответ №1:

это имя файла affiliates

 {
   "id": "something here",
   "id": "something else here"
}
  

импорт из файла json:

 import Affiliates from './affiliates.json'

Affiliates.map((p)=> {
   console.log(p.id)
}