如何更优或更简洁地统计数组中value非空的对象数量?
更优的实现方案
你的需求是统计数组中value属性非空的对象数量,这里有几个更简洁、更符合JS风格的实现方式:
1. 使用filter() + length(最直观)
利用数组的filter方法筛选出value非空的元素,直接取结果数组的长度即可,代码简洁易读:
const requestArr = [{ "name": "created", "value": "2023-01-01" }, { "name": "rm", "value": "Test" }, { "name": "st", "value": "" }, { "name": "status", "value": "" }, { "name": "it", "value": "" }] const count = requestArr.filter(item => item.value).length; console.log(count); // 输出2
2. 使用reduce()(性能更优)
如果处理超大数组,reduce会更高效——它不需要创建新数组,直接累加符合条件的数量:
const requestArr = [{ "name": "created", "value": "2023-01-01" }, { "name": "rm", "value": "Test" }, { "name": "st", "value": "" }, { "name": "status", "value": "" }, { "name": "it", "value": "" }] const count = requestArr.reduce((acc, item) => item.value ? acc + 1 : acc, 0); console.log(count); // 输出2
优化你的原始循环写法
如果还是想用循环,没必要通过Object.keys遍历索引,直接遍历数组元素更清晰:
let i = 0; for (const item of requestArr) { if (item.value) i++; } console.log(i); // 输出2
内容的提问来源于stack exchange,提问作者David Garcia
相关产品推荐
相关产品推荐

