Digamos que tenemos un objeto como:

{"A":["00002","00003","00004"]}

Y una matriz:

["00002", "00003"]

Lo que estoy tratando de hacer es verificar los valores de Objetos y si los valores de las claves no están todos en el usuario de alerta de matriz, los valores de la clave A no existen en la matriz.

¿Qué pasa si A es desconocido?

0
docodernew 24 feb. 2018 a las 00:11

4 respuestas

La mejor respuesta

Puede hacer .filter en la matriz y verificar si todos los valores existen en otra matriz o no.

var obj = {"A":["00002","00003","00004"]}
var check = ["00002", "00003"];

if(obj.A.filter(el => !check.includes(el)).length){
  console.log("Some elements does not exists");
}

Actualización: si no sabe cuál es la clave:

Podría haber varias formas, la que usaría es Object.values(obj)[0] para acceder a la matriz.

var obj = {"A":["00002","00003","00004"]}
var check = ["00002", "00003"];

if(Object.values(obj)[0].filter(el => !check.includes(el)).length){
  console.log("Some elements does not exists");
}
1
void 23 feb. 2018 a las 21:23

Debería recuperar la matriz dentro del objeto:

object.A

A continuación, debe recorrer la matriz que desea verificar

var allMatch = true;
var object = {"A":["00002","00003","00004"]};
["00002", "00003"].forEach(function(item){
    if(object.A.indexOf(item) === -1){ // -1 when not found
        allMatch = false;
    }
});

alert("Do they all match? " + allMatch);

O si necesita soporte de Old Internet Explorer.

var allMatch = true;
var object = {"A":["00002","00003","00004"]};
var arr = ["00002", "00003"];
for(var i=0;i<arr.length;i++){
    if(object.A.indexOf(arr[i]) === -1){ // -1 when not found
        allMatch = false;
        break; // Stop for loop, since it is false anyway
    }
};

alert("Do they all match? " + allMatch);
0
marc_s 15 abr. 2018 a las 17:25
function containsAllData(obj, key, arr)
{
   if(arr.length < obj[key].length)
   {
      alert("Array is not fully contained!");
      return false;
   }
   for(var i = 0; i < obj[key].length; i++)
      if(arr[i] !== obj[key][i])
      {   
         alert("Array contains different data!");
         return false;
      }
   return true;
}
0
Eigendrew 23 feb. 2018 a las 21:39

Sólo bucle de ellas y comprobar ..

var haystack = {"A":["00002","00003","00004"]};
var needle = ["00002", "00003"];

function allItemsExist(h, n){
  for(var k in h) if(!~n.indexOf(h[k])) return false;
  return true;
}

if(!allItemsExist(haystack.A, needle)) alert("something is missing");
else alert("everything is here");
0
I wrestled a bear once. 23 feb. 2018 a las 21:16