- 假数据仓库-常见数据枚举(日期、月份、周几、星期几,前导零、Excel 列号)
- 日期相关规律数据
- 快速凑出单元格列号(可快速扩展出常见的 excel 列号)
- 拼接原理
- 取得列号
(用 excel 自动填充来生成也很方便)
["1","2","3","4","5","6","7","8","9","10","11","12"] ["01","02","03","04","05","06","07","08","09","10","11","12"] ["1月","2月","3月","4月","5月","6月","7月","8月","9月","10月","11月","12月"] ["01月","02月","03月","04月","05月","06月","07月","08月","09月","10月","11月","12月"] ["周一","周二","周三","周四","周五","周六","周日"] ["星期一","星期二","星期三","星期四","星期五","星期六","星期日"] ["1","2","3","4","5","6","7","8","9","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"] ["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16","17","18","19","20","21","22","23","24","25","26","27","28","29","30","31"] ["1日","2日","3日","4日","5日","6日","7日","8日","9日","10日","11日","12日","13日","14日","15日","16日","17日","18日","19日","20日","21日","22日","23日","24日","25日","26日","27日","28日","29日","30日","31日"]快速凑出单元格列号(可快速扩展出常见的 excel 列号) 拼接原理
- 拿着排好序的26字母,利用 JS 字符串操作来拆解、拼接
const A_TO_Z_ARRAY = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("")
// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z"]
const AA_TO_AZ_ARRAY = A_TO_Z_ARRAY.map(item => "A"+item)
// ["AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ"]
const BA_TO_BZ_ARRAY = A_TO_Z_ARRAY.map(item => "B"+item)
// ["BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ"]
// 连接数组(concat 不会改变原有数组,而是会返回一个新的数组)
let AToBZArray = A_TO_Z_ARRAY.concat(AA_TO_AZ_ARRAY, BA_TO_BZ_ARRAY)
// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ", "BA", "BB", "BC", "BD", "BE", "BF", "BG", "BH", "BI", "BJ", "BK", "BL", "BM", "BN", "BO", "BP", "BQ", "BR", "BS", "BT", "BU", "BV", "BW", "BX", "BY", "BZ"]
取得列号
const A_TO_Z_ARRAY = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("")
const AA_TO_AZ_ARRAY = A_TO_Z_ARRAY.map(item => "A"+item)
// ["AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ", "AK", "AL", "AM", "AN", "AO", "AP", "AQ", "AR", "AS", "AT", "AU", "AV", "AW", "AX", "AY", "AZ"]
// 从上面复制要的这一段
let otherColArr = ["AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ"]
// 把两端拼接起来,拿到列号集合
let myCol = A_TO_Z_ARRAY.concat(otherColArr)
// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ"]
JS 字典是无序的,所以顺序可能并不如你想的那样…
所以采用 Javascript 中的 map 来存,可以达到有序
let obj = {}
myCol.forEach(item => obj[item] = "")
// {"A":"","AA":"","AB":"","AC":"","AD":"","AE":"","AF":"","AG":"","AH":"","AI":"","AJ":"","B":"","C":"","D":"","E":"","F":"","G":"","H":"","I":"","J":"","K":"","L":"","M":"","N":"","O":"","P":"","Q":"","R":"","S":"","T":"","U":"","V":"","W":"","X":"","Y":"","Z":""}
let myMap = new Map()
myCol.forEach(item => myMap.set(item, ""))
// {}
[...myMap.keys()]
// ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ"]
[...myMap.values()]
// ["", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", ""]
似乎有些麻烦了,填数据也没有很轻量直观的感觉,还是用对象+对照数组实现吧
- 数组有序,对象无序
let myCol = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "AA", "AB", "AC", "AD", "AE", "AF", "AG", "AH", "AI", "AJ"]
// 合并单元格,这一行就 A、AE 有值,其他的就不用写了,简短可维护的代码,达到了同样的效果
let obj = {
"A": "A单元格",
"AE": "AE单元格"
}
let header = myCol.map(item => obj[item] || "")
// ["A单元格", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "AE单元格", "", "", "", "", ""]
对比改版前后的代码,写个优化总结
需要注意重复的值(作为 key 不能重复,会导致列对不上)
在谷歌浏览器控制台里敲会有个数提示,可以进一步确保数据的正确性



