node.js - 使用 lodash 查找 JSON 中非空值的计数
问题描述
我有一个 JSON 响应,例如
let obj = [
{
id: 1,
amount: null,
},
{
id: 2,
amount: 123,
},
{
id: 3,
amount: null,
},
{
id: 4,
amount: null,
},
{
id: 5,
amount: 100,
},
];
我需要使用 lodash 函数查找上述 JSON 响应中存在的非空值的计数。
我在下面的代码中使用了正常的方式
for (var i = 0; i < obj.length; i++) {
if (obj[i]['amount'] != null) {
count++;
}
}
console.log(count);
谁能给出如何使用 lodash 做同样的事情的想法?
解决方案
_.sumBy()
如果不是 falsy(null
或 0) ,您可以使用并返回 1:
const obj = [{"id":1,"amount":null},{"id":2,"amount":123},{"id":3,"amount":null},{"id":4,"amount":null},{"id":5,"amount":100}]
const result = _.sumBy(obj, ({ amount }) => amount ? 1 : 0)
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js" integrity="sha512-90vH1Z83AJY9DmlWa8WkjkV79yfS2n2Oxhsi2dZbIv0nC4E6m5AbH8Nh156kkM7JePmqD6tcZsfad1ueoaovww==" crossorigin="anonymous"></script>
另一种选择是用于计算具有或不_.countBy()
具有amount
值的项目,并取值:null
'false'
const obj = [{"id":1,"amount":null},{"id":2,"amount":123},{"id":3,"amount":null},{"id":4,"amount":null},{"id":5,"amount":100}]
const result = _.countBy(obj, ({ amount }) => _.isNull(amount))['false']
console.log(result)
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js" integrity="sha512-90vH1Z83AJY9DmlWa8WkjkV79yfS2n2Oxhsi2dZbIv0nC4E6m5AbH8Nh156kkM7JePmqD6tcZsfad1ueoaovww==" crossorigin="anonymous"></script>
推荐阅读
- c++ - 在哪里释放内存而不引起错误
- reactjs - React Router 没有渲染正确的组件
- javascript - Django + Apache + Mobile 发起下载而不是服务页面
- javascript - 忽略 Puppeteer arg “--remote-debugging-port=0”
- python - 如何使用 Try 和 Exception 在 Python 中通过打印消息引发错误?
- javascript - Javascript/jQuery 设置时间延迟,从 DOM 中弹出底部元素
- python-3.x - Python/Pandas 的第一列 pf CSV 中未引用的日期 read_csv
- postgresql - PostgreSQL DB 设计 IF 列是 NULL 然后 COALESCE(COLUMN A, COLUMN B)
- ios - 应用程序关闭时从服务器获取数据
- java - Tourbased 游戏 - Threading java - (轮到你睡觉了?)