Как проверить, существует ли значение в ключе JSON, который имеет массив значений - PullRequest
0 голосов
/ 12 марта 2020

скажем, у меня есть следующее JSON:

{  
   "selfExclusionMessage":{  
      "accountId":989898,
      "expired":"false",
      "userId":"37327513",
      "products": [
        "arcade", "vegas", "ex"
        ]
   }
}

Как я могу проверить, что в массиве ключей продуктов присутствует указанное значение c. Например, если там присутствует значение «аркада». Я хотел бы иметь оператор if, который проверяет значения в массиве products и делает разные вещи для каждого из значений (arcade, vegas, ex), иногда присутствуют все три значения, а иногда только 1 или 2.

Ответы [ 5 ]

0 голосов
/ 13 марта 2020

var JSON = {
  "selfExclusionMessage": {
    "accountId": 989898,
    "expired": "false",
    "userId": "37327513",
    "products": [
      "arcade", "vegas", "ex"
    ]
  }
};
if ("products" in JSON.selfExclusionMessage) {
  console.log('Exist!');
  if (JSON.selfExclusionMessage.products.includes("vegas")) {
    console.log("includes");
  } else {
    console.log("!includes");
  }
} else {
  console.log('!Exist');
}

Примечание: - Простой способ решить эту проблему - определить, существует ли объект, существует ли ключ объекта, а затем проверяется, что массив включает значение с помощью метода include.

0 голосов
/ 12 марта 2020
function searchValue( json, value ) {

   return Array.isArray(json.selfExclusionMessage.products) && json.selfExclusionMessage.products.includes( value );
}
0 голосов
/ 12 марта 2020

Вы можете использовать условный (троичный) оператор с includes():

var jsonData = {  
   "selfExclusionMessage":{  
      "accountId":989898,
      "expired":"false",
      "userId":"37327513",
      "products": [
        "arcade", "vegas", "ex"
        ]
   }
}
function isExists(data, key, value){
  return jsonData.selfExclusionMessage[key].includes(value)? 'Exists' : 'Does not exists';
}
console.log(isExists(jsonData,'products','arcade'));
console.log(isExists(jsonData,'products','arcadexyzzzzzz'));
0 голосов
/ 12 марта 2020

Как насчет

let o = JSON.parse(myJSON);
for (let v of Object.values(o)) {
  if (Array.isArray(v)) return Array.includes("arcade");
  else return false;
}

Объяснение: (1) Разобрать JSON в объект (2) проверить все значения объекта для массивов (3), если есть массив, проверить, есть ли в нем желаемое значение

0 голосов
/ 12 марта 2020

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

const data = JSON.parse(json)
const { products } = data.selfExclusionMessage
if (products.includes('arcade')) {
 // do your stuff here
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...