javascript - 如何在 lodash 中使用 orderBy 替换空值
问题描述
如何正确地将空值替换为不同的值,例如orderby
在 lodash 中使用的字符串。
目前,这就是我用字符串替换空值的方法。我将使用单独的字符串foreach loop
替换空值.GroupDate
,然后使用该orderBy
函数。
test.forEach((e, i) => {
if (e.GroupDate === null) {
test[i].GroupDate = i.toString();
}
});
test = orderBy(test, [c => c.GroupDate, c => c.Index, c => c.Date], ['desc', 'asc']);
如果有更好的方法来替换 foreach 循环并将此条件添加到orderBy
?
我试过这个但它不起作用:
let groupDateNumber = 0;
test = orderBy(test, [
(c) => {
if (c.GroupDate === null) {
c.GroupDate = groupDateNumber.toString();
}
groupDateNumber++;
return c.GroupDate, c => c.Index, c => c.Timestamp;
}
], ['desc', 'asc']);
解决方案
您的 iteratee 函数返回一个数组,对吗?我相信你想要的是
let groupDateNumber = 0;
test = orderBy(test, [
(c) => {
if (c.GroupDate === null) {
c.GroupDate = groupDateNumber.toString();
}
groupDateNumber++;
return c.GroupDate;
},
c => c.Index,
c => c.Timestamp
], ['desc', 'asc']);
另一种方法是通过使用 lodash seq 方法_(value)
和map
and来做到这一点orderBy
。这应该使用惰性评估,因此它应该是有效的,尽管我不确定链接与 orderBy 和 sortBy 的效果如何。
test = _(test)
.map((e, i) => {
if (e.GroupDate === null) {
e.GroupDate = i.toString();
}
return e;
})
.orderBy([c => c.GroupDate, c => c.Index, c => c.Date], ['desc', 'asc'])
.value()
推荐阅读
- regex - Deleting the un-matched portion using sed
- java - 如果变量为空,如何显示 makeText 文本
- swift - 快速映射,来回
- sql - 仅为派生列中的不同值显示其他列值
- youtube-api - 我们如何使用 YouTube Analytics API 获得在 YouTube Studio 上显示的印象?
- java - 使用 Spring ldapTemplate 获取 Dynlist 属性的内容
- firebase - 运行firebase模拟器套件后如何恢复到云firestore
- ssh - 是否可以远程与编辑器合作?
- c# - 每 12 小时启动一个程序
- google-app-engine - Google Cloud App Engine - 部署多个环境