javascript - 删除数组中的所有重复项和未定义项。Ramda.js
问题描述
我有一个这样的数据结构:
{
'123': [1,1,3,2,undefined],
'321': [3,3,3,2,undefined,undefined],
'425': [null,2,2,4,2,null,null]
}
我想将项目添加到组数组中,然后检查是否存在未定义或重复项。
我也有一个解决方案,但我认为这还不够好:
check-is-nil.js
const checkIsNil = (groupId, data) => {
return over(lensProp(groupId), pipe(reject(isNil),uniq), data);
}
add-to-group.js
const addToGroup = (groupId, newObj, data) => {
return over(lensProp(groupId), append(newObj), data);
};
使用:
checkIsNil('123', addToGroup('123', 1, data))
结果:
{
'123': [1,3,2],
'321': [3,2],
'425': [2,4]
}
解决方案
reject is nil
value => value === undefined
应该做这项工作,如果你想保持null
价值观,你最终可以使用。
const clean = R.map(
R.pipe(R.reject(R.isNil), R.uniq),
);
const data = {
'123': [1,1,3,2,undefined],
'321': [3,3,3,2,undefined,undefined],
'425': [null,2,2,4,2,null,null]
};
console.log(
clean(data),
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ramda/0.26.1/ramda.js" integrity="sha256-xB25ljGZ7K2VXnq087unEnoVhvTosWWtqXB4tAtZmHU=" crossorigin="anonymous"></script>
推荐阅读
- php - 通过“docker ps”命令看不到 nginx 端口
- java - 是否可以在使用 Gson 反序列化期间将对象数组转换为地图?
- r - 将 R Sys.time() 转换为配置单元时间戳 data_type
- amazon-web-services - 一份用于多个队列的 terraform 策略文档
- python - 如何从字典中实例化一个类
- arrays - Mongoose 数组不保存 JSON 对象
- sql - VB.net SQL Datepicker 从下拉列表中选择日期,但手动指定时间
- jquery - 模态javascript重置关闭内容
- c++ - How do I use 'StartTranscriptionJobRequest' from the AWS Transcribe C++ API?
- php - Docusign PHP SDK - 填充模板预定义数据标签值