Comment puis-je faire une boucle et vérifier si un ou certains tableaux à l'intérieur d'un objet JavaScript est vide?
c'est-à-dire
const store = {
shirts : [],
shoes: ['nike', 'puma', 'addidas']
hats: [],
jerseys: ['barcelona', 'milan', 'arsenal']
}
5 Réponses :
const store = {
shirts : [],
shoes: ['nike', 'puma', 'addidas'],
hats: [],
jerseys: ['barcelona', 'milan', 'arsenal']
}
for(let item in store){
if(store[item].length == 0)
console.log(item)
}
Chaque élément vide sera enregistré dans la console
Récupérez les valeurs de l'objet en utilisant Object.values () . Vérifiez si au moins l'un d'entre eux est un tableau avec la longueur de 0 en utilisant some et Array.isArray ()
const store = {
shirts: [],
shoes: ['nike', 'puma', 'addidas'],
hats: [],
jerseys: ['barcelona', 'milan', 'arsenal']
}
console.log(
Object.values(store).some(v => Array.isArray(v) && v.length === 0)
)
Voici une seule ligne:
const main = o => Object.entries(o).some(([k,a])=>!a.length);
console.log(
main({x: [1,2,3],y: [123],}), // false
main({x: [1,2,3],y: [],}), // true
main({x: [],y: [],}), // true
);
Si vous souhaitez obtenir les clés vides, vous pouvez utiliser la méthode de filtrage
const store = {
shirts : [],
shoes: ['nike', 'puma', 'addidas'],
hats: [],
jerseys: ['barcelona', 'milan', 'arsenal']
}
const emptyKeys = Object.keys(store).filter((key) => {
if (store[key].length == 0) {
return key;
}
});
console.log(emptyKeys);
Si vous voulez juste savoir s'il existe un tableau vide, val sera vrai si l'un des tableaux est vide, sinon faux.
val = Object.keys(store).some(key => store[key].length === 0)