// 全组合
const arr = [
{ 字段1: '甲', 字段2: 'A', 字段3: '1' },
{ 字段1: '甲', 字段2: 'A', 字段3: '2' },
{ 字段1: '甲', 字段2: 'B', 字段3: '1' },
{ 字段1: '甲', 字段2: 'B', 字段3: '2' },
{ 字段1: '乙', 字段2: 'A', 字段3: '1' },
{ 字段1: '乙', 字段2: 'A', 字段3: '2' },
{ 字段1: '乙', 字段2: 'B', 字段3: '1' },
{ 字段1: '乙', 字段2: 'A', 字段3: '2' },
];
function isFullCombination(arr) {
if (arr.length === 0) return false;
const keys = Object.keys(arr[0]);
let valueMap = new Map(); // 键为keys,值为值set集合
let valueSet = new Set(); // 值集合
let valueNumberMap = new Map(); // 值映射
let n = 1;
for (val of arr) {
let valueString = '';
for (k of keys) {
if (!valueMap.has(k)) {
valueMap.set(k, new Set());
}
if (!valueNumberMap.has(val[k])) {
valueNumberMap.set(val[k], n++);
}
valueString += valueNumberMap.get(val[k]) + '-';
valueMap.get(k).add(val[k]);
}
if (valueSet.has(valueString)) {
return false;
}
valueSet.add(valueString);
}
return [...valueMap.values()].reduce((a, b) => a * b.size, 1) === arr.length;
}
console.log(isFullCombination(arr));
js判读是否是全组合
最新推荐文章于 2024-09-25 14:00:00 发布