Tengo una palabra clave (por ejemplo, -2330) que debe compararse con los 'valores' en esta cadena a continuación.
"[{\"type\":\"A_PRODUCT\",\"value\":[[{\"key\":\"SUBCLASS\",\"value\":\"1574\"}],[{\"key\":\"SUBCLASS\",\"value\":\"2331\"}]]}]";El resultado esperado debe ser verdadero o falso dependiendo de si la cadena tiene la palabra clave o no.
¿Cómo lo compruebo?
Primero debe analizar el JSON en una estructura JS adecuada. Debido a la naturaleza anidada de los datos, necesita 1) map el primer objeto en su matriz, 2) devolver el valor de la propiedad de value del primer objeto de cada uno y finalmente 3) verificar si la palabra clave está incluida en la matriz devuelta y devuelve true o false .
const json = '[{\"type\":\"A_PRODUCT\",\"value\":[[{\"key\":\"SUBCLASS\",\"value\":\"1574\"}],[{\"key\":\"SUBCLASS\",\"value\":\"2331\"}]]}]'; const data = JSON.parse(json); function doesItExist(data, keyword) { const values = data[0].value.map(arr => arr[0].value); return values.includes(keyword); } console.log(doesItExist(data, '2331')); console.log(doesItExist(data, 'Bob')); console.log(doesItExist(data, '1574'));Voy a hacer algo como esto para hacer un bucle.
var a = "[{\"type\":\"A_PRODUCT\",\"value\":[[{\"key\":\"SUBCLASS\",\"value\":\"1574\"}],[{\"key\":\"SUBCLASS\",\"value\":\"2331\"}]]}]"; var new_a = JSON.parse(a); var value_compare = '1574'; new_a[0]['value'].forEach(element => { if (element[0].value == value_compare) { //DO SOMETHING alert('found: '+ JSON.stringify(element)); } });