面对算法,我的脑子就像生了锈

1.2022-01-21(聚餐的日子)

1.radio单选框的自定义样式

思路:根据label标签来展示需要的样式,隐藏原来的input里面的样式
     <div class="radio">
            <input id="click_me" type="radio" name="radio" value="click_me" v-model="checked">
            <label for="click_me">Click_me</label>
            <input id="or_me" type="radio" name="radio" value="or_me" v-model="checked">
            <label for="or_me">Or_me</label>
        </div>
 .radio label {
        background: #fff;
        border: 1px solid #ddd;
        padding: .5rem 1.25rem;
        border-radius: 5px;
        cursor: pointer;
        color: #444;
        -webkit-transition: box-shadow 400ms ease;
        transition: box-shadow 400ms ease;
    }

     .radio label:hover {
        box-shadow: 0 2px 5px 0 rgba(0, 0, 0, 0.16), 0 2px 10px 0 rgba(0, 0, 0, 0.12);
    }

     .radio input[type="radio"] {   //隐藏原来属性
        display: none;
    }

     .radio input[type="radio"]:checked+label { //点击label的选中样式
        background: #2196F3;
        color: #fff;
        border-color: #2196F3;
    }
效果

在这里插入图片描述

1.2022-01-12(努力工作的日子)

var arr1 = Object.assign([], globalVariable['alreadyList']);//浅拷贝或者深拷贝 没理解透 但是很重要
var arr2 = $.merge(arr1, arr3)//合并数组 arr1 和 arr3;此时arr1也会变成合并的新数组;
var opt = $.inArray('xx',arr1)  //返回xx在数组arr1的位置,不存在则返回-1

1.2022-01-10(发工资的日子)

1.1vue简单过滤器、v-for用法
   <div v-if="books.length>0">
            <table border="1">
                <thead>
                    <th>书名</th>
                    <th>价格</th>
                    <th>数量</th>
                    <th>操作</th>
                </thead>
                <tbody>
                    <tr v-for="(item,index) in books" :key="index" >
                        <td>{{item.name}}</td>
                        <td>{{item.price|getFormatPricr('¥')}}</td>
                        <td>
                            <button @click="addOrSub(0,index)" :disabled="item.num ==1">-</button>
                            {{item.num}}
                            <button @click="addOrSub(1,index)">+</button>
                        </td>
                        <td @click="deleteTr(index)">{{item.option}}</td>
                    </tr>
                </tbody>
            </table>
        </div>
     var vm = new Vue({
            el: '#app',
            data: {
                isUser: 'true',
                show:false,
                books: [{
                    name: '追风筝的人',
                    price: '45',
                    num: 1,
                    option: '移除'
                },
                {
                    name: 'C语言编程大全',
                    price: '88',
                    num: 1,
                    option: '移除'
                }, {
                    name: '乱世佳人',
                    price: '46',
                    num: 1,
                    option: '移除'
                }
                ]
            },
            methods: {
                addOrSub(opt, i) {
                    if (opt == 0) {
                        this.books[i].num--
                    } else if (opt == 1) {
                        this.books[i].num++
                    }
                },
                deleteTr(i){
                    this.books.splice(i,1)
                }
            },
            filters: {
                getFormatPricr(price, unit) {
                    return unit + price
                }
            }
        });

效果

1.2 splice用法(可替换、可删除、可增加)参考网站
  1.arr.splice(2,0,"William") //插入,无删除
  2.arr.splice(2,1,"William") //删除从index2原有数组的一个元素,并新增一个元素
  3.arr.splice(2,3,"William")//删除从 index 2原有数组的三个元素并新增一个元素
1.3input 中key的用法是为了阻止input复用的问题
1.4v-for中key是为了提高dom的执行效率
1.5 v-if和v-show的区别
     v-if:当条件为false时,包含v-if指令的元素根本不会存在dom中 
     v-show:当条件为false时 v-show只是给元素增加了一个行内样式display:none 

1. 数组根据相同的属性进行划分,生成新的数组(2021-11-10)

思路

1.建立一个新对象temp={};
2.循环遍历原数组allList,取出要划分的属性值key,将此值与temp[key]判断
3.若不存在则根据此在此属性下新建对象,temp[key]={sub:[]},
4.若存在则直接temp[key].sub.push()
eg:

var allList = [{
      "FDATE": "20211106", //日期
      "FICBillNo": "YQCIN343895", //入库单号
      "FICMOBillNo": "YQWORK101507", //工单号
      "FDeptID": "生产部(制造部)", //部门
      "FEntryID": "1", //行号
      "FItemNumber": "9.05.02.00024", //料号
      "FMustQty": "2000", //应收数量
      "FICStockQty": "4", //实收数量
      "FStockName": "立库保税成品仓", //仓库
      "FPalNo": "99889988" //托盘号
    },
    {
      "FDATE": "20211105", //日期
      "FICBillNo": "YQCIN343896", //入库单号
      "FICMOBillNo": "YQWORK101508", //工单号
      "FDeptID": "生产部(制造部)", //部门
      "FEntryID": "1", //行号
      "FItemNumber": "9.05.02.000581", //料号
      "FMustQty": "3000", //应收数量
      "FICStockQty": "4", //实收数量
      "FStockName": "立库保税成品仓", //仓库
      "FPalNo": "99889988"
    },
    {
      "FDATE": "20211105", //日期
      "FICBillNo": "YQCIN343896", //入库单号
      "FICMOBillNo": "YQWORK101508", //工单号
      "FDeptID": "生产部(制造部)", //部门
      "FEntryID": "1", //行号
      "FItemNumber": "9.05.02.000581", //料号
      "FMustQty": "3000", //应收数量
      "FICStockQty": "4", //实收数量
      "FStockName": "立库保税成品仓", //仓库
      "FPalNo": "99"
    },
    {
      "FDATE": "20211105", //日期
      "FICBillNo": "YQCIN343896", //入库单号
      "FICMOBillNo": "YQWORK101508", //工单号
      "FDeptID": "生产部(制造部)", //部门
      "FEntryID": "1", //行号
      "FItemNumber": "9.05.02.000581", //料号
      "FMustQty": "3000", //应收数量
      "FICStockQty": "4", //实收数量
      "FStockName": "立库保税成品仓", //仓库
      "FPalNo": "99"
    },
    {
      "FDATE": "20211105", //日期
      "FICBillNo": "YQCIN343896", //入库单号
      "FICMOBillNo": "YQWORK101508", //工单号
      "FDeptID": "生产部(制造部)", //部门
      "FEntryID": "1", //行号
      "FItemNumber": "9.05.02.000581", //料号
      "FMustQty": "3000", //应收数量
      "FICStockQty": "4", //实收数量
      "FStockName": "立库保税成品仓", //仓库
      "FPalNo": "99746"
    }
    ]

按照FPalNo来划分,
代码如下:

         var _tempArray = {};
          $.each(allList, function (index, item) {
            let {
              FPalNo
            } = item;  //等价于 let FPalNo = item.FPalNo
            if (!_tempArray[FPalNo]) {
              _tempArray[FPalNo] = {
                FPalNo,
                sub: []
              }
            }
            _tempArray[FPalNo].sub.push(item)
            //Object.values()返回一个数组,其元素是在对象上找到的可枚举属性值。属性的顺序与通过手动循环对象的属性值所给出的顺序相同
          })
          let list = Object.values(_tempArray)
          

结果如下:
在这里插入图片描述

2. 动态规划之爬楼梯(每次只能爬1或者2),别用js写了,抄抄Java吧 2021-11-11

1.算法思路就是 ,爬第n阶楼梯的方法数量等于两部分之和
1.1 爬上 [n-1] 阶的方法数量(再爬一阶)
1.2 爬上 [n-2]阶的方法数量(再爬两阶);
so:dp[n] = dp[n-1] + dp[n-2]dp[n]=dp[n−1]+dp[n−2]*
初始化 dp[0]=1dp[0]=1 和 dp[1]=1dp[1]=1
时间复杂度:O(n)
代码如下(java):

class Solution{
    public int climbStairs(int n){
        int[] dp = new init[n+1];
        dp[0]=1;
        dp[1]=1;
        for(var int i=2;i<=n;i++){
              dp[i] = dp[i-1]+dp[i-2];
        }
        return dp[n];
   }
}

既然学不会那就给他记下来~

2.1第 N 个泰波那契数(2021-11-12)

(今天想摸鱼,复习一下昨天学的动态规划)
泰波那契序列 Tn 定义如下:
T0 = 0, T1 = 1, T2 = 1, 且在 n >= 0 的条件下 Tn+3 = Tn + Tn+1 + Tn+2
给你整数 n,请返回第 n 个泰波那契数 Tn 的值。

var tribonacci = function(n) {
    var t=[];
    t[0]=0,t[1]=1,t[2]=1;
   for(var i=3;i<=n;i++){
        t[i] = t[i-1]+t[i-2]+t[i-3]
   }
   return t[n];
};

3. 正则表达式我来啦(2021-11-13)

全部字母都是大写,比如 “USA” 。
单词中所有字母都不是大写,比如 “leetcode” 。
如果单词不只含有一个字母,只有首字母大写, 比如 “Google” 。

var detectCapitalUse = function(word) {
          const reg=/^([A-Z][a-z]+|[a-z]+|[A-Z]+)$/;
           return reg.test(word);
};

4.二叉树的中序遍历(2021-11-16)

昨天竟然忘记了==T.T
题目描述:给定一个二叉树的根节点 root ,返回它的 中序 遍历。

/**
 * Definition for a binary tree node.
 * function TreeNode(val, left, right) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.left = (left===undefined ? null : left)
 *     this.right = (right===undefined ? null : right)
 * }
 */
var inorderTraversal = function(root,  res=[]) {
  if(!root) return res;
  inorderTraversal(root.left,res);
  res.push(root.val);
  inorderTraversal(root.right,res);
  return res;
};

4.好几天没算法了,记录一下最近开发遇到的问题~~

1.table的时候,用slideup和slidedown会遇到卡顿事件,应在table外围包一层div,绑定此div事件来下滑上拉展示;
2.table元素设置margin属性无效

5.记录前端监听异常的几种方法

1.window.onerror(监听不到接口报错)

  window.onerror = testError;
    function testError() {
        arglen = arguments.length;
        var errorMsg = "参数个数:" + arglen + "个";
        for (var i = 0; i < arglen; i++) {
            errorMsg += "/n参数" + (i + 1) + ":" + arguments[i];
        }
        alert('我是window.error监听方式出错了~' + errorMsg);
        window.onerror = null;
        return true;
    }
    2. window.addEventListener
window.addEventListener('error', function (error) {
        alert('我是addEventListener监听方式出错了~' + error.target);
    }, true)
    3.断网的时候location.reload刷新请求用不了
    4.try-catch
   function InitgetLogo() {
    try {
        $.ajax({
            url:'',
            type: 'get',
            dataType: 'json',
            success: function (res) {
            },
        })
    } catch (e) {
        //处理错误代码
        alert('我是try-catch-出错了~' + e.message)
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值