如何统计列表中指定属性值非空的对象数量?
如何统计列表中指定属性值非null的对象数量?
嘿,我来帮你搞定这个问题!针对你给出的示例数据,我们可以用几种简洁的JavaScript方法来统计list['value1']里age属性不为null的对象数量,刚好能得到你预期的结果2。
方法一:使用filter() + length(最直观)
这是最容易理解的方式,先通过filter()筛选出符合条件的对象,再取筛选后数组的长度:
var list = { 'value1':[{'name': 'name1', 'age': null}, {'name': 'name2', 'age': 30}, {'name': 'name3', 'age': 10}], 'value2':[{'name': 'name11', 'age': 40}, {'name': 'name12', 'age': null}, {'name': 'name13', 'age': 10}] }; // 统计value1中age非空的对象数量 const validCount = list['value1'].filter(item => item.age !== null).length; console.log(validCount); // 输出: 2
filter()会创建一个新数组,只保留满足item.age !== null的元素,最后用length拿到这个数组的元素个数,就是我们要的统计数。
方法二:使用reduce()(更高效,无额外数组创建)
如果不想额外创建新数组,可以用reduce()直接累加符合条件的对象数量,性能会更优一点:
const validCount = list['value1'].reduce((total, currentItem) => { // 当age不为null时,累加器+1,否则保持原值 return currentItem.age !== null ? total + 1 : total; }, 0); // 初始累加值设为0 console.log(validCount); // 输出: 2
额外小提示
如果你的场景中需要同时排除age为undefined的情况,可以把判断条件改成item.age != null(注意是双等号),因为null == undefined,这样就能同时过滤掉null和undefined两种情况啦。
内容的提问来源于stack exchange,提问作者delmin
相关产品推荐
相关产品推荐

