zoukankan      html  css  js  c++  java
  • 假数据仓库-常见数据枚举(日期、月份、周几、星期几,前导零、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 字符串操作来拆解、拼接
    /* 26 字母转单字母数组 */
    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"]
    
    /* AA-AZ */
    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"]
    
    /* BA-BZ 方法同上(AA-AZ),把字母 A 换成 B 即可,...ZA-ZZ 同理 */
    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"]
    

    取得列号

    /* 26 字母转单字母数组 */
    const A_TO_Z_ARRAY = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("")
    
    /* AA-AZ */
    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"]
    
    
    /* 我的 excel 是从 A列 到 AJ列 */
    // 从上面复制要的这一段
    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, ""))
    // {}
    /*
    [[Entries]]
    0: {"A" => ""}
    1: {"B" => ""}
    2: {"C" => ""}
    3: {"D" => ""}
    4: {"E" => ""}
    5: {"F" => ""}
    6: {"G" => ""}
    7: {"H" => ""}
    8: {"I" => ""}
    9: {"J" => ""}
    10: {"K" => ""}
    11: {"L" => ""}
    12: {"M" => ""}
    13: {"N" => ""}
    14: {"O" => ""}
    15: {"P" => ""}
    16: {"Q" => ""}
    17: {"R" => ""}
    18: {"S" => ""}
    19: {"T" => ""}
    20: {"U" => ""}
    21: {"V" => ""}
    22: {"W" => ""}
    23: {"X" => ""}
    24: {"Y" => ""}
    25: {"Z" => ""}
    26: {"AA" => ""}
    27: {"AB" => ""}
    28: {"AC" => ""}
    29: {"AD" => ""}
    30: {"AE" => ""}
    31: {"AF" => ""}
    32: {"AG" => ""}
    33: {"AH" => ""}
    34: {"AI" => ""}
    35: {"AJ" => ""}
    */
    
    [...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 不能重复,会导致列对不上)

    在谷歌浏览器控制台里敲会有个数提示,可以进一步确保数据的正确性

  • 相关阅读:
    Rotation issue in XCode 4.5 and iOS 6.0
    Core Data on iOS 5 Tutorial: How To Work with Relations and Predicates
    How To Synchronize Core Data with a Web Service – Part 2
    Unit Testing in Xcode 4 – use OCUnit and SenTest instead of GHUnit
    Migrate old project to ARC
    Core Data on iOS 5 Tutorial: Getting Started
    How To Draw Graphs with Core Plot, Part 2
    How To Use NSOperations and NSOperationQueues
    How To Save Your App Data With NSCoding and NSFileManager
    What's New in iOS
  • 原文地址:https://www.cnblogs.com/suwanbin/p/15206716.html
Copyright © 2011-2022 走看看