#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)
}