Quiero saber qué lógica debo usar para verificar la matriz de objetos principales de cada objeto contenida en el objeto principal principal
Hola chicos, quiero verificar si este valor, por ejemplo: "127.0.0.1" existe en este objeto (MyObject tiene como 2k objetos en él)
{ "name" : MyObject "value": [ { "name" : "Object1", "properties":{ "address" : [ "13.65.25.19/32", "13.66.60.119/32", ] } }, { "name" : "Object2", "properties":{ "address" : [ "13.65.25.19/32", "127.0.0.1", ] } } ] }Por cierto, include() debe coincidir con toda la cadena o, por ejemplo, si 127.0.0.1 es así en mi objeto 127.0.0.1/32, ¿todavía puedo recuperarlo incluso si hay un rango de IP?
Sus datos están estructurados de manera bastante específica, por lo que puede escribir un método personalizado al que puede llamar una y otra vez. Comprobará si hay un
const obj = { name: 'MyObject', value: [ { name: 'Object1', properties: { address: ['13.65.25.19/32', '13.66.60.119/32'], }, }, { name: 'Object2', properties: { address: ['13.65.25.19/32', '127.0.0.1'], }, }, ], }; const address = '127.0.0.1'; const includesAddress = (address) => { for (const val of obj.value) { if (val.properties.address.some((a) => address === a)) return true; } return false; }; console.log(includesAddress(address));Implementación Array.flatMap
const obj = { name: 'MyObject', value: [ { name: 'Object1', properties: { address: ['13.65.25.19/32', '13.66.60.119/32'], }, }, { name: 'Object2', properties: { address: ['13.65.25.19/32', '127.0.0.1'], }, }, ], }; const address = '127.0.0.1'; const output = obj.value.flatMap(item => item.properties.address).includes(address); console.log(output);Si desea verificar si la dirección IP parcial está incluida en la lista, debe utilizar una implementación de expresiones regulares.
Ejemplo de implementación
const obj = { name: 'MyObject', value: [ { name: 'Object1', properties: { address: ['13.65.25.19/32', '13.66.60.119/32'], }, }, { name: 'Object2', properties: { address: ['13.65.25.19/32', '127.0.0.1'], }, }, ], }; const address = '13.65.25.19'; const regex = new RegExp(address, 'i') const output = obj.value.flatMap(item => item.properties.address).filter(x => regex.test(x)).length > 0; console.log(output);