mapInfo = {
const provinceValues = provinces;
let allKeys = new Set(provinceValues.map(p => Object.keys(p)).flat());
allKeys.delete("id");
allKeys.delete("colorNum");
allKeys = [...allKeys];
const grouped = _.groupBy(provinceValues, p => allKeys.map(k => String(p[k])).join("||"));
const colorReplacementMap = new Map();
const colorNumProps = new Map();
const layers = {};
function getPropColors(propName, propValue) {
const propColor = (layers[propName] ??= new Map());
if (!propColor.has(propValue)) propColor.set(propValue, []);
return propColor.get(propValue);
}
for (let provinceGroup of Object.values(grouped)) {
const first = provinceGroup[0];
const colorNum = first.colorNum;
const sourceColorNums = provinceGroup.map(p => p.colorNum);
sourceColorNums.forEach(c => colorReplacementMap.set(c, colorNum));
const provinceColorProps = _.pick(first, allKeys);
colorNumProps.set(colorNum, provinceColorProps);
for (let [prop, value] of Object.entries(provinceColorProps)) {
getPropColors(prop, value).push(colorNum);
}
}
return { colorReplacementMap, colorNumProps, layers };
}