saber objeto existe elemento dentro con comprobar buscar array javascript arrays angularjs object angularjs-controller

objeto - saber si un elemento existe en un array javascript



Compruebe si existe un valor en la matriz(AngularJS) (3)

Puede usar indexOf () . Me gusta:

var Color = ["blue", "black", "brown", "gold"]; var a = Color.indexOf("brown"); alert(a);

El método indexOf () busca en la matriz el elemento especificado y devuelve su posición. Y devuelve -1 si no se encuentra el artículo.

Si desea buscar de principio a fin, use el método lastIndexOf () :

var Color = ["blue", "black", "brown", "gold"]; var a = Color.lastIndexOf("brown"); alert(a);

La búsqueda comenzará en la posición especificada, o al final si no se especifica una posición de inicio, y finalizará la búsqueda al comienzo de la matriz.

Devuelve -1 si no se encuentra el artículo.

Esta pregunta ya tiene una respuesta aquí:

Actualmente estoy usando el método forEach() de angular para verificar el nuevo valor con la matriz de objetos. Pero ese es el enfoque incorrecto porque, por ejemplo, en la lista hay 20 objetos. Cuando estoy creando un objeto con un artículo existente, la instrucción if en forEach dice una vez que el artículo existe y 19 veces no.

El siguiente código:

var list = []; articlelist.forEach(function (val) { list.push(val.artNr); }); $log.info(list);

La articlelist contiene los 20 objetos. Para comparar solo necesito el artNr . Porque cuando el Usuario crea un nuevo artículo, entonces debe ser una declaración if para verificar si el artNr agregado ya existe.

$scope.createItem = function (createItem) { if(list.artNr === createItem.artNr) { $scope.message = ''artNr already exists!''; } ... };

El problema es que list.artNr me devuelve "indefinido" porque la variable de lista es una matriz:

lista de salida en consola => Array ["AB001", "AB002", "AB003", "AB004"] ,

Salida de createItem: => Object { artNr: "AB001", description: "New Article" ...}

¿Cómo puedo comparar el nuevo objeto creado con la matriz de la variable de lista?



Puedes usar algo como esto ...

function (field,value) { var newItemOrder= value; // Make sure user hasnt already added this item angular.forEach(arr, function(item) { if (newItemOrder == item.value) { arr.splice(arr.pop(item)); } }); submitFields.push({"field":field,"value":value}); };