J'ai le tableau JS suivant. Quelle est la meilleure façon de supprimer toutes les lignes avec des clés non définies?
cleanEmptyRows(json){ var i=0; var row_to_remove=[]; json.forEach(function(element) { for (var key in element) { if(element[key]==null){ row_to_remove.push(i); break; } } i++; }); row_to_remove.forEach(function(element){ var index = json.indexOf(element); if (index > -1) { json.splice(index, 1); } });
J'ai essayé le code suivant mais ne fonctionne pas. Qu'est-ce que je fais mal?
json=[{email: "1234569@hhh.pt", first: "Joao", last: "Bastos", gender: "Male", phone: "3.51939e+11"}, {email: "", first: undefined, last: undefined, gender: undefined, phone: undefined}, (...)];
3 Réponses :
Solution simple JSON.parse(JSON.stringify(x)), Si vous souhaitez supprimer la ligne entière, vous pouvez suivre le code ci-dessous, var t = [{email: "1234569@hhh.pt", first: "Joao", last: "Bastos", gender: "Male", phone: "3.51939e+11"},
{email: "", first: undefined, last: undefined, gender: undefined, phone: undefined},
{email: "1234569@hhh.pt", first: "Joao", last: "Bastos", gender: "Male", phone: undefined}];
var resultArray = t.filter((row) => {
var ignoreValue = Object.values(row).some(elem => elem === undefined);
return !ignoreValue ? true : false;
});
console.log(resultArray);
var t = [{email: "1234569@hhh.pt", first: "Joao", last: "Bastos", gender: "Male", phone: "3.51939e+11"},
{email: "", first: undefined, last: undefined, gender: undefined, phone: undefined}];
console.log(JSON.parse(JSON.stringify(t)));
Bonne réponse - plus :)
Simple et efficace, j'aime bien le JSON.parse (JSON.stringify (value))
! Le plus simple que j'ai vu jusqu'à présent, qui gère également la suppression des valeurs indéfinies à l'intérieur des objets contenus dans des tableaux! Merci :)
Un moyen simple consiste à stringifier et à analyser le JSON.
let jsonTest = { foo: 'foo', bar: undefined }; Object.keys(jsonTest).forEach((key) => { if (typeof jsonTest[key] == 'undefined') { delete jsonTest[key]; } });
Vous pouvez également le faire en supprimant les propriétés non définies. Vous pouvez le rendre récursif si vous n'avez pas d'objet plat.
let jsonTest = { foo: 'foo', bar: undefined }; let allDefined = JSON.parse(JSON.stringify(jsonTest));
Essayez
let json=[{email: "1234569@hhh.pt", first: "Joao", last: "Bastos", gender: "Male", phone: "3.51939e+11"}, {email: "", first: undefined, last: undefined, gender: undefined, phone: undefined}, ]; json.map(x=> Object.keys(x).map(k=> x[k]===undefined ? delete x[k]:0)); console.log(json);
json.map(x=> Object.keys(x).map(k=> x[k]===undefined ? delete x[k]:0));
Veuillez ajouter le javascript que vous utilisez qui ne fonctionne pas.
qu'avez-vous codé?
JSON est une représentation sous forme de chaîne d'un objet JavaScript, pas d'un tableau.
Il n'y a pas de JSON dans cette question. Sans oublier, JSON est une représentation chaîne . Nommer une variable
json
qui n'est pas une chaîne est assez trompeur. Pas une réponse mais juste une note que vous voudrez peut-être reconsidérer :)