w3schools remove objects inarray from elementos array agregar javascript jquery arrays

remove - Usando jQuery inArray con una matriz de objetos JavaScript



remove element from array jquery (5)

Estoy trabajando con una serie de objetos JavaScript como tales:

var IssuesArray = [{"ID" : "1", "Name" : "Issue1"}, {"ID" : "2", "Name" : "Issue2"}, {"ID" : "3", "Name" : "Issue3"}];

Mi esfuerzo final es tratar de eliminar un objeto de la matriz cuando conozco el ID del objeto. Estoy tratando de usar un código que es algo como esto:

$.grep(IssuesArray, function(n, i) { return i != $.inArray("2", IssuesArray); });

Así que esto muestra que estoy tratando de usar jQuery grep para eliminar un elemento por índice (i), que estoy tratando de recuperar usando jQuery inArray. Por supuesto, el código anterior no funcionará porque "2" debería corresponder a un elemento de la matriz, que son todos objetos de JavaScript (un objeto nunca será igual a "2"). Necesito algo como:

$.inArray(javascriptObject.Name=="2", IssuesArray);

¿Alguna vez alguien ha tenido éxito usando inArray para obtener índices de objetos de JavaScript, usando un valor de campo dentro de ese objeto? Cualquier ayuda sería apreciada. Gracias.

ACTUALIZACIÓN / ACLARACIÓN: Un par de personas se han confundido con mi pregunta, pero recibí una respuesta que, sin embargo, funciona. Estoy usando:

IssuesArray = $.grep(IssuesArray, function(n) { return n.ID != "2"; });

Creo que estaba pensando demasiado en esto, cuando la solución fue realmente muy fácil. Simplemente quería eliminar un objeto JavaScript de una matriz, siempre y cuando supiera el valor de una propiedad particular en ese objeto. La solución anterior utiliza grep de jQuery para devolver todo desde la matriz, excepto cualquier objeto cuyo ID == "2". Como siempre, gracias por las respuestas rápidas. Un par de respuestas fueron buenas soluciones y habrían funcionado utilizando (utilizando "empalme", ​​por ejemplo), pero esta solución parece ser la más breve y directa. Gracias de nuevo.


¿¿Simplificar??

var IssuesArray = { 1: "Issue1", 2: "Issue2", 3: "Issue3" }; var issue2 = IssuesArray[2];

¿Por qué una lista de hashes cuando un solo hash va a hacer?


No estoy seguro si entendí tu pregunta correctamente, pero lo haría:

$.each(IssuesArray, function(i, item){ if (item.ID == IDToBeRemoved) IssuesArray.splice(i, 1); });


Sin usar jQuery u otros frameworks:

var newArray = []; var i=0, len=IssuesArray.length; var bad_id = "2"; // or whatever while(i<len) { if(IssuesArray[i].ID !== bad_id) { newArray.push(IssuesArray[i++]); } }


n es tu ítem de la lista, así que algo como esto debería hacer el trabajo:

$.grep(issuesArray, function(n) { return n.ID != "2"; })


var spliceID = function(id, arr) { $(arr).each(function(i, el) { if (el.ID == id) { arr.splice(i,1); return false; } }); return arr; } console.log(spliceID(''2'', IssuesArray));