当前位置: 首页 > news >正文

92.更新一些收藏的经验贴总结学习

一、JS相关

1.进制转换

(1)十进制转二进制

十进制数除2取余法:十进制数除2,余数为权位上的数,得到的商继续除2,直到商为0。最后余数从下往上取值。

(2)二进制转十进制

把二进制按权展开:从右到左 权值乘以2的0次方到N次方

(3)二进制转八进制

3位二进制数为一组:从右到左3位二进制数按权展开相加得到一位八进制数,不足补零

(4)八进制转二进制

八进制数除2取余法:除2取余,余数从下往上取值

(5)二进制转十六进制

4位二进制数为一组:从右到左4位二进制数按权展开相加得到一位十六进制数,不足补零

(6)十六进制转二进制

十六进制除2取余法:除2取余,余数从下往上取值

(7)十进制转八进制或十六进制

有2种方法:

一是:把十进制转为二进制后再转八进制或十六进制

二是:十进制除8或除16取余法,余数也是从下往上取值

(8)八进制或十六进制转十进制 

把八进制数或十六进制数按权展开相加得到十进制数:比如八进制226为 2*8^2+2*8^1+6*8^0

(9)八进制与十六进制转换

有2种方法:

一是:先转换为二进制再相互转换

二是:想转换为十进制再互相转换

(10)负数转换

先将负数写为补码形式,再根据二进制转换其他进制的方法进行:

比如将十进制数 -9 转为八进制:

-9的补码为1111 1111 1111 0111(先原码--再反码--再补码)

然后从右往左3位一划,不足补零,最后得到177767,即为-9的八进制形式

总结:

十进制(八进制、十六进制)转二进制:除2取余法

二进制转十进制:从右到左按权展开(2的n次方)

二进制转八进制:3位一划,从右到左按权展开,不足补零(2的n次方)

二进制转十六进制:4位一划,从右到左按权展开,不足补零(2的n次方)

十进制转八进制(十六进制):除8(16)取余法

八进制(十六进制)转十进制:从右到左按权展开(8的n次方或16的n次方)

八进制与十六进制相互转换:可先转为二进制(十进制)再相互转换

十进制负数转八进制(十六进制):先将负数写为补码再用二进制转换

2.js超出显示省略号

str = "开始时间,结束时间,span名称,应用名称,页面访问趋势"

需求:只显示字符串前3项,其余以省略号展示,并且鼠标悬浮时展示全部

newStr = str.split(',').slice(0,3).join(',') + ',...'

<div :title="str">

        newStr:{{newStr}}

</div>

3.call()、apply()、bind()用法

(1)都用来重定义this指向

var name = "小小" , age = 20

var obj = {

        name:"阿拙",

        objjAge:this.age,

        myFun:function(){

                // 此时取不到this.age值 因为this指向obj这个对象

                console.log(this.name + "年龄:" + this.age) 

        }

var data = {

        name:'苏苏",

        age:19

}

obj.myFun.call(data)          //   苏苏年龄:19

obj.myFun.apply(data)       //   苏苏年龄:19

obj.myFun.bind(data)()      //   苏苏年龄:19

由以上代码可知:call、apply和bind都可以通过传参调用obj对象内的方法将值传递进去,bind返回的是一个新的函数,必须调用它才能被执行。

(2)对比call、apply、bind传参

var name = "小小" , age = 20

var obj = {

        name:"阿拙",

        objjAge:this.age,

        myFun:function(fm,to){

                // 此时取不到this.age值 因为this指向obj这个对象

                console.log(this.name + "年龄:" + this.age,"来自" + fm + "去往" + to) 

        }

var data = {

        name:'苏苏",

        age:19

}

obj.myFun.call(data,'北京','上海')          //   苏苏年龄:19,来自北京去往上海

obj.myFun.apply(data,['北京','上海'])     //   苏苏年龄:19,来自北京去往上海

obj.myFun.bind(data,'北京','上海')()      //    苏苏年龄:19,来自北京去往上海

由以上代码可知:call、apply和bind三个函数的第一个参数都是this的指向对象 ,第二个参数传参有区别:call和bind都是直接放在第一个参数后,以逗号隔开;apply的第二个参数需要放在数组里。三者的参数不限定是 string 类型,允许是各种类型,包括函数 、 object 等。

4.js点击按钮复制文本

因为select()输入框只对input和textarea有效,对<p>无效,所以可以在p标签后添加textarea标签并将其隐藏,点击按钮时先把<textarea>的value改为<p>的innerText,然后复制<textarea>的内容。

<style type="text/css">

 .wrapper {position: relative;}

 #input {position: absolute;top: 0;left: 0;opacity: 0;z-index: -10;}

</style>

<div class="wrapper">

 <p id="text">被复制的内容</p>

 <textarea id="input">已隐藏</textarea>

 <button onclick="copyText()">复制</button>

</div>

<script type="text/javascript">

 function copyText() {

  var text = document.getElementById("text").innerText;

  var input = document.getElementById("input");

  input.value = text; // 修改文本框的内容

  input.select(); // 选中文本

  document.execCommand("copy"); // 执行浏览器复制命令

  alert("复制成功");

 }

</script>

5.js获取数组对象最大(小)值

list = [{ id: 1, name: 'jack' },
        { id: 2, name: 'may' },
        { id: 3, name: 'shawn' },
        { id: 4, name: 'tony' }]

需要获取list数组对象中id属性的最大值和最小值:

(1)Math方法

// 最大值 4
Math.max.apply(Math,this.list.map(item => { return item.id }))
// 最小值 1
Math.min.apply(Math,this.list.map(item => { return item.id }))

(2)sort排序(会使原数组元素位置发生变化)

// 最大值 4
this.list.sort((a, b) => { return b-a })[0].id  
// 最小值 1
this.list.sort((a, b) => { return a-b })[0].id 

6.for循环内异步操作

(1)实现每隔1秒打印0~4的值

function box(index){

        if(index <5){

                console.log("index is : ",index)

                setTimeout(function(){

                        box(index+1)

                },1000) 

        }

}

box(0)

(2)使用递归实现倒计时

function showTime(count){

        console.log("count is : ", count)

        if(count==0){

                console.log("All is Done !")

        }else{

                count -= 1

                setTimeout(function(){

                        showTime(count)

                },1000)

        }

}

showTime(10)

(3)async和await实现打印0~4

var asyncFunc = function(arr,i){

        return new Promise(resolve,reject){

                setTimeout(function(){

                        arr.push(i)

                        console.log("index is: " ,i)

                        resolve()

                },1000)

        }

}

var box1 = async function(){

        var arr = []

        for(var i=0;i<5;i++){

                await asyncFunc(arr,i)

        }

        console.log(arr)

}

box1()

(4)即时执行函数打印数值

function buildList(list){

        var result = []

        for(var i=0;i<list.length;i++){

                var item = 'item' + list[i]       // item6   item7  item8

                result.push(function(index,it){

                        return function(){

                                console.log(it + ' ' + list[index])

                        }

                }(i,item))

        }

        return result

}

function testList(){

        var fnList = buildList([6,7,8])

        for(j=0;j<fnList.length;j++){

                fnList[j]()

        }

}

testList()

7.js求n个数中的最大值

// 求n个数中的最大值
function getMax(arr) {
    var max = arr[0];
    for (var i = 1; i < arr.length; i++) {
        if (max < arr[i]) {
            max = arr[i];
        }
    }
    console.log(max);
}
var array = [12, 17, 9, 0, 90]

getMax(array)   // 90

8.js获取本周、本月时间区间

未完待续......

http://www.lryc.cn/news/221627.html

相关文章:

  • mysql 问题解决 4
  • llama-7B、vicuna-7b-delta-v1.1和vicuna-7b-v1.3——使用体验
  • 深入理解JVM虚拟机第十九篇:JVM字节码中方法内部的结构和与局部变量表中变量槽的介绍
  • windows好玩的cmd命令
  • 线扫相机DALSA--常见问题四:修改相机参数,参数保存无效情况
  • linux中用date命令获取昨天、明天或多天前后的日期
  • 【无标题】360压缩软件怎么用?超级好用!
  • 一图搞懂傅里叶变换(FT)、DTFT、DFS和DFT之间的关系
  • 行情分析——加密货币市场大盘走势(11.7)
  • 阿里微服务质量保障系列:故障演练
  • 基于springboot+vue开发的教师工作量管理系
  • 【NI-DAQmx入门】NI-DAQmx之C、C++、VB、VB.net与C#支持
  • python转xml为json
  • PHP Curl请求封装
  • java list set 特性
  • Docker 用centos 编译安装apache
  • 专访虚拟人科技:如何利用 3DCAT 实时云渲染打造元宇宙空间
  • 第三章:人工智能深度学习教程-基础神经网络(第二节-ANN 和 BNN 的区别)
  • 回归模型原理总结及代码实现
  • 游戏开发中的“御用中介“
  • flink1.15报错 processElement_split
  • 电脑投屏到TCL电视鼠标延迟
  • 220v插座led指示灯维修
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • javascript自定义事件的观察者模式写法和用法以及继承
  • 蓝桥杯官网练习题(正则问题)
  • iOS使用NSURLSession实现后台上传
  • linux之信号
  • golang工程中间件——redis常用结构及应用(string, hash, list)
  • Java中数据结构(基本数据类型+引用数据类型)介绍+整理+例子+对比