node.js - 从json数组节点js获取非唯一记录
问题描述
我有一个要求,它将获得如下所示的 json 数组对象(输入) json 我需要获取重复记录和取消记录并将其加载到相应的列表中。检查数组是否有重复的条件 :: id
let uniqueList = [];
let dupList = [];
Array.prototype.contains = function (item) {
let filtered_item = this.filter((i) => {
return i.id === item.id
});
return !!filtered_item.length;
}
function contains(list, item) {
let filtered_item = list.filter((i) => {
return i.id === item.id
});
return !!filtered_item.length;
}
function pushToUniqueList(item) {
uniqueList.push(item);
}
function pushToDuplicateList(item) {
dupList.push(item);
}
for (let i = 0; i < objList.length; i++) {
if (uniqueList.contains(objList[i])) {
pushToDuplicateList(objList[i]);
} else {
pushToUniqueList(objList[i]);
}
}
Input : [{"obj":{"id":"1234","table":"123"}},{"obj":{"id":"1234","table":"123"}},{"obj":{"id":"12344","table":"123"}}]
output : uniqueList =[{ "obj":{ "id":"12344", "table":"123" }]
dupList =[{"obj":{"id":"1234","table":"123"}},{"obj":{"id":"1234","table":"123"}}]
我已经尝试使用上面的代码,但它不工作请帮助!提前致谢!
解决方案
你可以试试下面的,这段代码在线性时间内运行
const data = [
{ obj: { id: "1234", table: "123" } },
{ obj: { id: "1234", table: "123" } },
{ obj: { id: "12344", table: "123" } },
];
const map = new Map();
for (const entry of data) {
if (map.has(entry.obj.id)) {
map.get(entry.obj.id).push(entry);
} else {
map.set(entry.obj.id, [entry]);
}
}
const uniques = [];
const duplicates = [];
for (const [id, values] of map.entries()) {
if (values.length > 1) {
duplicates.push(...values);
} else {
uniques.push(...values);
}
}
console.log(`duplicates: ${JSON.stringify(duplicates)}`);
console.log(`unique: ${JSON.stringify(uniques)}`);
输出
[
{ obj: { id: '1234', table: '123' } },
{ obj: { id: '1234', table: '123' } }
] [ { obj: { id: '12344', table: '123' } } ]
推荐阅读
- php - 在 div 类中自动插入图像
- angular - ngOnInit 在 Angular 的组件内初始化 EventEmitter 变量是否太晚了?
- bash - 在循环中拆分字符串
- json - AppSettings 反序列化为未知或动态类
- reactjs - Matrial UI 更改轮廓选择的边框
- python - 使用自动调用 build() 方法在 Tensorflow 中创建层
- javascript - 空格和连字符分割字符串
- javascript - 用于工具 vue 的 css 过渡结束效果
- reactjs - navigation.goback() 缺少数据
- sql-server - 如何构建 Python 环境来部署 SSIS 包,或在本地运行 SSIS?