2017-08-17 6 views
-3

J'ai une AllLinks colonne sharepoint nommé dans lequel im stockage tableau comme:Comment vérifier si une valeur existe dans le tableau json? Si correspondance est trouvée, supprimez la valeur paire de clés

[{"AllLinks":"Link9","LinkURL":"http://www.Link9.com"}, 
{"AllLinks":"Link6","LinkURL":"http://www.Link6.com"}] 

Comment vérifier si une valeur existe dans un tableau d'objets et si une correspondance est trouvé, supprimez la paire de valeurs de clé.

Par exemple, si la valeur Link6 correspond, supprimez complètement l'entrée du tableau à l'aide de javascript/jquery. J'ai essayé avec:

var newA = data.d.results.filter(function (item) return item.AllLinks !== x;}); 

mais item.AllLinks retourne à nouveau le tableau complet se

comme AllLinks est une colonne dans ma liste de sharepoint.

+0

vous voulez l'enlever avant ou sans JSON dans js ?? decode –

+1

Notez que rien à ce sujet est JSON. J'ai changé le titre, la description et les tags pour vous. –

+0

Mais dans beaucoup de validateurs json il sort comme valide json.Est-ce vraiment pas json et juste un tableau d'objets? –

Répondre

2

Vous pouvez le faire d'une manière si facile ici:

var jsonArry = [{"AllLinks":"Link9","LinkURL":"http://www.Link9.com"},{"AllLinks":"Link6","LinkURL":"http://www.Link6.com"}]; 
 

 
var value = "Link6"; 
 

 
for(var i=0; i<jsonArry.length; i++){ 
 
    if(jsonArry[i].AllLinks === value){ 
 
     jsonArry.splice(i,1); 
 
    } 
 
} 
 

 
console.log(JSON.stringify(jsonArry));

Si vous êtes sûr que la clé value est unique puis ajouter un mot-clé break dans la boucle for au sein if après vous supprimez l'objet afin d'éviter des boucles inutiles comme celle-ci,

for(var i=0; i<jsonArry.length; i++){ 
    if(jsonArry[i].AllLinks === value){ 
     jsonArry.splice(i,1); 
     break; 
    } 
} 
+0

Vous ne voyez pas que l'élément de tableau n'est pas vraiment supprimé? Vous avez toujours 'null' dedans, ce qui n'est pas ce que l'OP veut. – PeterMader

+0

@PeterMader vous avez raison. Merci d'avoir amélioré. Nous pouvons utiliser l'épissure dans ce cas. –

2

Vous pouvez utiliser la fonction de filtre:

var a = [{"AllLinks":"Link9","LinkURL":"http://www.Link9.com"},{"AllLinks":"Link6","LinkURL":"http://www.Link6.com"}] 

var newA = a.filter(function (item) { 
    return item.AllLinks !== "Link6"; 
});