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
jsonqui n'est pas une chaîne est assez trompeur. Pas une réponse mais juste une note que vous voudrez peut-être reconsidérer :)