Files
get-colors-from-beans/example-colormap.ts
2026-01-06 04:16:17 +08:00

151 lines
4.7 KiB
TypeScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import colorMap from './colorMap.json';
console.log('=== ColorMap 使用示例 ===\n');
// 示例1查找特定颜色的所有引用
function findColorByHex(hexColor: string) {
const key = Object.keys(colorMap).find(key => key.toLowerCase() === hexColor.toLowerCase());
return key ? colorMap[key] : null;
}
console.log('示例1: 查找白色 (#FFFFFF)');
const whiteColor = findColorByHex('#FFFFFF');
if (whiteColor) {
console.log(`找到 ${whiteColor.length} 个引用:`);
whiteColor.slice(0, 5).forEach((item, index) => {
console.log(` ${index + 1}. 品牌: ${item['color-title']}, 色号: ${item['color-name']}`);
});
if (whiteColor.length > 5) {
console.log(` ... 还有 ${whiteColor.length - 5} 个引用`);
}
}
console.log('');
// 示例2统计每个颜色的引用次数
console.log('示例2: 按引用数排序前10个颜色');
const colorStats = Object.entries(colorMap)
.map(([color, items]) => ({ color, count: items.length }))
.sort((a, b) => b.count - a.count)
.slice(0, 10);
colorStats.forEach((item, index) => {
console.log(`${index + 1}. ${item.color}: ${item.count} 次引用`);
});
console.log('');
// 示例3查找特定品牌的颜色
function findColorsByBrand(brandName: string) {
const results: Array<{color: string, colorName: string}> = [];
Object.entries(colorMap).forEach(([hexColor, items]) => {
items.forEach(item => {
if (item['color-title'] === brandName) {
results.push({
color: hexColor,
colorName: item['color-name']
});
}
});
});
return results;
}
console.log('示例3: 查找 COCO-291 品牌的颜色');
const cocoColors = findColorsByBrand('COCO-291');
console.log(`找到 ${cocoColors.length} 个颜色`);
console.log('前5个颜色:');
cocoColors.slice(0, 5).forEach((item, index) => {
console.log(` ${index + 1}. ${item.colorName}: ${item.color}`);
});
console.log('');
// 示例4查找跨品牌重复的颜色
function findSharedColors(minBrandCount: number = 2) {
const sharedColors: Array<{color: string, brands: string[]}> = [];
Object.entries(colorMap).forEach(([hexColor, items]) => {
const uniqueBrands = [...new Set(items.map(item => item['color-title']))];
if (uniqueBrands.length >= minBrandCount) {
sharedColors.push({
color: hexColor,
brands: uniqueBrands
});
}
});
return sharedColors.sort((a, b) => b.brands.length - a.brands.length);
}
console.log('示例4: 查找被多个品牌共享的颜色至少5个品牌');
const sharedColors = findSharedColors(5);
console.log(`找到 ${sharedColors.length} 个共享颜色`);
console.log('前10个:');
sharedColors.slice(0, 10).forEach((item, index) => {
console.log(` ${index + 1}. ${item.color}: ${item.brands.length} 个品牌`);
console.log(` 品牌: ${item.brands.join(', ')}`);
});
console.log('');
// 示例5统计品牌分布
function countBrandDistribution() {
const brandCounts: { [brand: string]: number } = {};
Object.values(colorMap).forEach(items => {
items.forEach(item => {
const brand = item['color-title'];
brandCounts[brand] = (brandCounts[brand] || 0) + 1;
});
});
return Object.entries(brandCounts)
.sort((a, b) => b[1] - a[1]);
}
console.log('示例5: 品牌颜色统计');
const brandDist = countBrandDistribution();
console.log('各品牌颜色数量:');
brandDist.forEach(([brand, count]) => {
console.log(` ${brand}: ${count} 个颜色`);
});
console.log('');
// 示例6查找特定色号
function findColorByName(colorName: string) {
const results: Array<{brand: string, color: string}> = [];
Object.entries(colorMap).forEach(([hexColor, items]) => {
items.forEach(item => {
if (item['color-name'] === colorName) {
results.push({
brand: item['color-title'],
color: hexColor
});
}
});
});
return results;
}
console.log('示例6: 查找色号 "A01"');
const a01Colors = findColorByName('A01');
console.log(`找到 ${a01Colors.length} 个品牌包含色号 A01:`);
a01Colors.forEach((item, index) => {
console.log(` ${index + 1}. ${item.brand}: ${item.color}`);
});
console.log('');
// 示例7颜色统计信息
console.log('示例7: 整体统计信息');
const totalColorReferences = Object.values(colorMap).reduce((sum, items) => sum + items.length, 0);
const uniqueColors = Object.keys(colorMap).length;
const avgReferences = (totalColorReferences / uniqueColors).toFixed(2);
console.log(` 总颜色引用次数: ${totalColorReferences}`);
console.log(` 唯一颜色数量: ${uniqueColors}`);
console.log(` 平均每个颜色被引用: ${avgReferences}`);
console.log('');
console.log('=== 示例运行完成 ===');