Je reçois un tableau qui me revient et je dois compter les lignes qui contiennent une valeur
J'ai essayé d'appeler arr.length mais cela me donne la longueur totale du tableau p >
var arr = [ { id: '1', '': '' }, { id: '2', '': '' }, { id: '3', '': '' }, { id: '4', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' } ]
Le résultat doit être 4.
8 Réponses :
Vous pouvez essayer ceci:
var count = 0; for (var x of arr) { if (x.id != '') { count++; } }
En gros, ce que je fais, c'est faire une boucle sur tout l'objet et si ce n'est pas une chaîne vide, comptez-la.
Vous pouvez utiliser réduire et certains comme celui-ci. Ceci vérifie toutes les clés de l'objet:
const arr = [{id:'1','':''},{id:'2','':''},{id:'3','':''},{id:'4','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''}] const count = arr.reduce((r,a) => Object.values(a).some(v => v) ? ++r: r, 0) console.log(count)
Utilisez réduisez à ajoutez les éléments si id.length> 0
var arr = [ { id: '1', '': '' }, { id: '2', '': '' }, { id: '3', '': '' }, { id: '4', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' } ] let count = arr.reduce((val, itm) => itm.id.length > 0 ? val + 1 : val + 0, 0) console.log(count)
Parcourez le tableau et vérifiez si la clé id a une valeur
var output = 0; var arr = [ { id: '1', '': '' },{ id: '2', '': '' },{ id: '3', '': '' },{ id: '4', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' } ] arr.forEach(e => { if (e["id"] != '') { output++; } }); console.log(output);
Vous pouvez compter si une ligne a une valeur truey .
var array = [ { id: '1', '': '' }, { id: '2', '': '' }, { id: '3', '': '' }, { id: '4', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }, { id: '', '': '' }], count = array.reduce((s, o) => s + Object.values(o).some(Boolean), 0); console.log(count);
Élément de liste
Utilisation de réduire
var arr = [ { id: '1', '': '' },{ id: '2', '': '' },{ id: '3', '': '' },{ id: '4', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' } ] console.log(arr.reduce((acc,e)=>{e.id!=''?acc++:false; return acc},0))
Utilisez le filtre pour capturer uniquement les clés avec une valeur et renvoyer la longueur du tableau résultant.
var arr = [ { id: '1', '': '' },{ id: '2', '': '' },{ id: '3', '': '' },{ id: '4', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' },{ id: '', '': '' } ] var res = arr.filter(val => { return val.id }) console.log(res.length)
Vous pouvez simplifier le filtre pour qu'il ressemble à ceci arr.filter (val => val.id)
si vous êtes fan de Lodash, vous pouvez utiliser countBy
( documentation )
_.countBy(array, obj => obj.id !== '').true;
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>
Un ventilateur de doublure:
const array = [{id:'1','':''},{id:'2','':''},{id:'3','':''},{id:'4','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''},{id:'','':''}] // The iterator function `obj => obj.id === ''` returns Boolean value `true` or `false` const count = _.countBy(array, obj => obj.id !== ''); // Get the `true` value console.log(count.true);