常用的js代码片段

1.单选框/手风琴

1 
View Code

 

 

2.复选框

 1 function checkListTwo(){    //点击变换效果
 2             var li = document.getElementById("checkList").getElementsByTagName("li");
 3             for(var i=0;i){
 4                 li[i].onclick = function(){
 5                     if(this.className == 'selected'){
 6                         this.className = null;  //单击若判断已有类,再次点击选中会清空class
 7                     }else{
 8                         this.className = 'selected';
 9                     }
10                 }
11             }
12         }
View Code

 

3.多级导航菜单

 1 
View Code

 

4.获取时间,把获取到的毫秒数转换成我们需要的时间格式即可

 1 function getFormatTime(time) {
 2         var time = time  0;
 3  
 4         var h = parseInt(time/3600),
 5             m = parseInt(time%3600/60),
 6             s = parseInt(time%60);
 7         h = h < 10 ? "0"+h : h;
 8         m = m < 10 ? "0"+m : m;
 9         s = s < 10 ? "0"+s : s;
10  
11         return h+":"+m+":"+s;
12     }
View Code

 

5.小时钟显示

 1 
 2 
 3 
 4     
 5 
 6     Date
 7 
 8 
 9     
38     
39 40
View Code

 

6.小写转大写

 1 
 2 
 3 
 4 
11 
12 
13 
14 
15 Enter your name: 
16 
17 
18 
View Code

7.禁止用户输入数字

 1 
 2 
 3 
 4     
 5     Document
 6 
 7 
 8 
9 Type some text (numbers not allowed): 10 11
12 13 33 34
View Code

8.Web SQL浏览器端数据库


   
        
       Web SQL 
      
      
   
   
   
      
状态信息
View Code

 

9.一个增删demo

 1 DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta charset="UTF-8">
 5     <title>一个增删demotitle>
 6 head>
 7 <body>
 8     <input type="text" id="text">
 9     <input type="button" value="添加" id="button">
10     <ul>
11         <li>第1个<button class="btn" id="1">删除button>li>
12         <li>第2个<button class="btn" id="2">删除button>li>
13         <li>第3个<button class="btn" id="3">删除button>li>
14     ul>
15     <script>
16             var button = document.getElementById("button");
17             var text = document.getElementById("text");
18             var ul = document.getElementsByTagName("ul")[0];
19             var btnClass = document.getElementsByClassName("btn");        
20         button.onclick = function(){
21             var deleteButton = document.createElement("button");    
22             var value = text.value;
23                 deleteButton.setAttribute("class","btn");
24             var deleteText = document.createTextNode("删除");
25                 deleteButton.appendChild(deleteText);
26             var li = document.createElement("li");
27             var liText = document.createTextNode(value);
28                 li.appendChild(liText);
29                 li.appendChild(deleteButton);
30                 ul.appendChild(li);
31             for(var i=0;i<btnClass.length;i++){
32                 btnClass[i].onclick=function(){
33                 this.parentNode.parentNode.removeChild(this.parentNode);
34             }
35         }
36         }
37 
38             for(var i=0;i<btnClass.length;i++){
39                 btnClass[i].onclick=function(){
40                     this.parentNode.parentNode.removeChild(this.parentNode);
41                 }
42             }
43     script>
44 body>
45 html>
View Code

 

10.Generator抽奖逻辑

 1 
View Code

 

 11.检测数据类型

//写出一个比typeof运算符更准确的类型判断函数。

var type = function (o){
  var s = Object.prototype.toString.call(o);
  return s.match(/\[object (.*?)\]/)[1].toLowerCase();
};

type({}); // "object"
type([]); // "array"
type(5); // "number"
type(null); // "null"
type(); // "undefined"
type(/abcd/); // "regex"
type(new Date()); // "date"
View Code

 

    function checkedType(target){
        return Object.prototype.toString.call(target).slice(8,-1);
    }
View Code

 

    
View Code

 

12.数组去重——Array.filter()

let arr=[2,3,4,2,3];
console.log(arr.filter(function(item,index,self){
    return self.indexOf(item)==index}
    )
)
View Code

:性能差

13.数组/字符串去重——利用for循环去重

/*var arr1 ="abcdabcd";*/
var arr1=['a','b','c','a','d','b']
var arr2=[];
for(var i=0;i){
    if(arr2.indexOf(arr1[i])<0){
      arr2.push(arr1[i]);
       }
 }
document.write(arr2);
View Code

 :性能良好

13.1数组去重——ES6(Set)

let arr=[1,2,3,4,5,3,5,6,2];
let a=new Set(arr);
let b=[...a];
console.log(b);//[1,2,3,4,5,6]
View Code

:性能优

13.2数组去重——创建空对象

 1 let arr=[1,2,3,4,5,3,5,6,2];
 2 let b=[];
 3 let c={};
 4 for(let i=0;i){
 5    if(!c[arr[i]]){
 6        b.push(arr[i]);
 7        c[arr[i]]='hello';   //
 8    }
 9 }
10 console.log(b);//[ 1, 2, 3, 4, 5, 6 ]
11 console.log(c);
12 /*{1: "hello", 2: "hello", 3: "hello", 4: "hello", 5: "hello", 6: "hello"}*/
View Code

 注:性能最优

13.3数组去重——利用splice

function newArr(arr){
    for(var i=0;i){
        for(var j=i+1;j)
            if(arr[i]==arr[j]){ 
            //如果第一个等于第二个,splice方法删除第二个
            arr.splice(j,1);
            j--;
            }
        }
 
    return arr;
 }
var arr = [1,1,2,5,6,3,5,5,6,8,9,8];
 
console.log(newArr(arr))
View Code

 注:性能最差

 

13.4数组去重——Array.sort()

function distinct(a, b) {
    let arr = a.concat(b)
    arr = arr.sort()
    let result = [arr[0]]

    for (let i=1, len=arr.length; i) {
        arr[i] !== arr[i-1] && result.push(arr[i])
    }
    return result;
}
console.log(distinct([4,3,2],[5,4,2])) //[2,3,4,5]
View Code

13.5字符串去重——ES6(set)

[...new Set('ababbc')].join('')
// "abc"
View Code

 

14.1判断数组是否存在重复值

var arr=['333','222','222','444','333'];
var s=arr.join(",")+",";
for(var i=0;i){
     if(s.replace(arr[i]+",","").indexOf(arr[i]+",")>0)
           alert("数组中有重复元素:" + arr[i]);
}
View Code

 

14.2判断数组是否存在重复值(2)

var ary = new Array("111","22","33","111");
var nary=ary.sort();

for(var i=0;i){
       if (nary[i]==nary[i+1]){
             alert("数组重复内容:"+nary[i]);
       }
}
View Code

 

14.3判断数组是否存在重复值(3)

function isRepeat(arr){
    var hash = [];
    for(var i in arr) {
         if(hash[arr[i]])
            return true;
         hash[arr[i]] = true;
}
     return false;
}

var arr=["111","22","33","111"];
alert(isRepeat(arr))
View Code

 

15.获取浏览URL中查询字符串的参数

 1 function showWindowHref(arr){
 2     var sHref = arr;
 3     var args = sHref.split('?');
 4     if(args[0] == sHref){
 5         return "";
 6     }
 7     var arr = args[1].split('&');
 8     alert(arr)    //staffid=12333,name=xiaoming,age=23
 9     var obj = {};
10     for(var i = 0;i< arr.length;i++){
11         var arg = arr[i].split('=');
12         obj[arg[0]] = arg[1];
13         console.log(obj[arg[0]])    //12333,xiaomi,23
14     }
15     return obj;
16 }
17 var href = showWindowHref("https://www.runoob.com/jsref/met-win-close.html?staffid=12333&name=xiaoming&age=23"); // obj
18 alert(href['name']); // xiaoming
View Code

 

16.原生Ajax

 1 
 2 
 3 
 4     
 5     原生的Ajax
 6 
 7 
 8 

9 37 38
View Code

 

 1 100——客户必须继续发出请求
 2 101——客户要求服务器根据请求转换HTTP协议版本
 3 200——交易成功
 4 201——提示知道新文件的URL
 5 202——接受和处理、但处理未完成
 6 203——返回信息不确定或不完整
 7 204——请求收到,但返回信息为空
 8 205——服务器完成了请求,用户代理必须复位当前已经浏览过的文件
 9 206——服务器已经完成了部分用户的GET请求
10 300——请求的资源可在多处得到
11 301——删除请求数据
12 302——在其他地址发现了请求数据
13 303——建议客户访问其他URL或访问方式
14 304——客户端已经执行了GET,但文件未变化
15 305——请求的资源必须从服务器指定的地址得到
16 306——前一版本HTTP中使用的代码,现行版本中不再使用
17 307——申明请求的资源临时性删除
18 400——错误请求,如语法错误
19 401——请求授权失败
20 402——保留有效ChargeTo头响应
21 403——请求不允许
22 404——没有发现文件、查询或URl
23 405——用户在Request-Line字段定义的方法不允许
24 406——根据用户发送的Accept拖,请求资源不可访问
25 407——类似401,用户必须首先在代理服务器上得到授权
26 408——客户端没有在用户指定的时间内完成请求
27 409——对当前资源状态,请求不能完成
28 410——服务器上不再有此资源且无进一步的参考地址
29 411——服务器拒绝用户定义的Content-Length属性请求
30 412——一个或多个请求头字段在当前请求中错误
31 413——请求的资源大于服务器允许的大小
32 414——请求的资源URL长于服务器允许的长度
33 415——请求资源不支持请求项目格式
34 416——请求中包含Range请求头字段,在当前请求资源范围内没有range指示值,请求也不包含If-Range请求头字段
35 417——服务器不满足请求Expect头字段指定的期望值,如果是代理服务器,可能是下一级服务器不能满足请求
36 500——服务器产生内部错误
37 501——服务器不支持请求的函数
38 502——服务器暂时不可用,有时是为了防止发生系统过载
39 503——服务器过载或暂停维修
40 504——关口过载,服务器使用另一个关口或服务来响应用户,等待时间设定值较长
41 505——服务器不支持或拒绝支请求头中指定的HTTP版本
View Code

 

 17.短横线转换为驼峰命名

 1         
View Code

 

 18.vue实现简单购物车



    
        
        vue综合练习
        
    
    
        

购物车

if="products.length==0">空空如也

else> for="(product,index) in products">
编号 商品名称 商品价格 商品数量 操作
{{index+1}} {{product.name}} {{product.price}} {{product.num}}
总价:{{total}}
View Code

 

18.2.vue实现简单购物车2




    
    Document
    


        
购物车
View Code

 

19.vue——卡片列表循环单击选中效果

<li v-for="(item,index) in filterAddress"  v-bind:class="{'check': index == currentIndex}" @click="currentIndex=index"> 
 /*filterAddress计算属性的方法值可以放在,充当数组*/
//@click="currentIndex=index"标明了将点击的索引值赋给currentIndex,index == currentIndex自身的索引和当前点击事件索引相同,则产生选中事件
/*当产生点击事件后,第一个currentIndex因为相等所以产生true,check类就可以渲染,v:bind和@click结合使用,会产生奇妙的状态!*/
View Code

 

  • for="(item,index) in filterAddress" v-bind:class="{'check': index == current && current !== ' '}" @click="current=index"> /*current默认为空,然后默认不会被选中*/
  • View Code

    :与1的手风琴效果类似

     

    20.深度拷贝

    var deepCopy = function(obj) {
        if (typeof obj !== 'object') return;
        var newObj = obj instanceof Array ? [] : {};
        for (var key in obj) {
            if (obj.hasOwnProperty(key)) {
                newObj[key] = typeof obj[key] === 'object' ? deepCopy(obj[key]) : obj[key];
            }
        }
        return newObj;
    }
    View Code

     

    21.ES6——Primise-async语法实现红绿灯

    
    
    
        
        
        
        实现一个红绿灯
        
    
    
        

    实现一个红绿灯,把一个圆形 div 按照绿色 3 秒,黄色 1 秒,红色 2 秒循环改变背景色

    Promise、async\await 语法实现


    View Code

     

    22.HTML5拖拽图片上传及本地预览

    
    
    
        
        
        
        HTML5拖拽上传
        
    
    
        

    HTML5拖拽上传及本地预览

    将文件拖拽到此处开始上传!

    View Code

     

    23.使用js实现极简Vue.js双向数据绑定功能

    
    
    
        
        
        
        实现极简Vue.js双向数据绑定
    
    
    
    
    {{message}}
    View Code
    <--! HTML代码-->
    
        

    input1=>

    input2=>

    我每次比input1的值加1=>
    <--! JS代码--> var oInput1 = document.getElementById('input1'); var oInput2 = document.getElementById('input2'); var oSpan = document.getElementById('span'); var obj = {}; Object.defineProperties(obj, { val1: { configurable: true, get: function() { oInput1.value = 0; oInput2.value = 0; oSpan.innerHTML = 0; return 0 }, set: function(newValue) { oInput2.value = newValue; oSpan.innerHTML = Number(newValue) ? Number(newValue) : 0 } }, val2: { configurable: true, get: function() { oInput1.value = 0; oInput2.value = 0; oSpan.innerHTML = 0; return 0 }, set: function(newValue) { oInput1.value = newValue; oSpan.innerHTML = Number(newValue)+1; } } }) oInput1.value = obj.val1; oInput1.addEventListener('keyup', function() { obj.val1 = oInput1.value; }, false) oInput2.addEventListener('keyup', function() { obj.val2 = oInput2.value; }, false)
    View Code

     

    24.左中右三栏布局,中间自适应,5种布局方法

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>左中右三栏布局,中间自适应,5种布局方法title>
        <style>
            body{
                margin: 0;
                padding: 0;
            } 
            /**  FlexBox  **/
            .container{display: flex;}
            .container div{min-height: 100px;}
            .container .left,
            .container .right{width: 300px; background-color: orange;}
            .container .center{flex:1;background-color: #ccc;}
    
            /**  Float  **/
            .container2 div{min-height: 100px;}
            .container2 .left,
            .container2 .right{background-color: palegreen;width: 300px;}
            .container2 .center{background-color: #ccc}
            .container2 .left{float: left;}
            .container2 .right{float: right;}
    
            /**  absolute  **/
            .container3{min-height: 100px;}
            .container3 div{min-height: 100px;position: absolute;}
            .container3 .left,
            .container3 .right{background-color: palegreen;width: 300px;}
            .container3 .center{background-color: #ccc;left: 300px;right: 300px;}
            .container3 .left{left: 0;}
            .container3 .right{right: 0;}
    
            /**  table  **/
            .container4{width: 100%;height: 100px;display: table;}
            .container4 div{display: table-cell;}
            .container4 .left,
            .container4 .right{background-color: palegreen;width: 300px;}
            .container4 .center{background-color: #ccc;}
    
            /**  CSS Grid  **/
            .container5{
                width: 100%;
                display: grid;
                grid-template-rows: 100px;
                grid-template-columns: 300px auto 300px;
            }
            .container5 div{min-height: 100px;}
            .container5 .left,
            .container5 .right{background-color: palegreen;}
            .container5 .center{background-color: #ccc;}
    
            /**  双飞翼(浮动)  **/
            .container6{
                
            }
            .container6 div{min-height: 100px;}
            .container6 .left,
            .container6 .right{background-color: palegreen;}
            .container6 .center{background-color: #ccc;}
        style>
    head>
    <body>
        
        
        <h1>左中右三栏布局,中间自适应h1>
        <h2>1. FlexBox方案h2>
        <div class="container">
            <div class="left">div>
            <div class="center">
                左中右三栏布局,中间自适应,FlexBox方案左中右三栏布局,中间自适应,FlexBox方案左中右三栏布局,
                中间自适应,FlexBox方案左中右三栏布局,中间自适应,FlexBox方案左中右三栏布局,中间自适应,FlexBox方案
            div>
            <div class="right">div>
        div>
    
        <h2>2. Float方案h2>
        <div class="container2">
            <div class="left">div>
            <div class="right">div>
            <div class="center">
                左中右三栏布局,中间自适应,Float方案左中右三栏布局,中间自适应,Float方案左中右三栏布局,中间自适应,
                Float方案左中右三栏布局,中间自适应,Float方案左中右三栏布局,中间自适应,Float方案左中右三栏布局,中间自适应
            div>
        div>
    
        <h2>3. 绝对定位方案h2>
        <div class="container3">
            <div class="left">div>
            <div class="center">
                左中右三栏布局,中间自适应,绝对定位方案左中右三栏布局,中间自适应,绝对定位方案左中右三栏布局,
                中间自适应,绝对定位方案左中右三栏布局,中间自适应,绝对定位方案左中右三栏布局,中间自适应,绝对定位方案
            div>
            <div class="right">div>
        div>
    
        <h2>4. 格布局方案h2>
        <div class="container4">
            <div class="left">div>
            <div class="center">
                左中右三栏布局,中间自适应,表格布局方左中右三栏布局,中间自适应,表格布局方左中右三栏布局,中间自适应
                左中右三栏布局,中间自适应,表格布局方左中右三栏布局,中间自适应,表格布局方左中右三栏布局,中间自适应,
            div>
            <div class="right">div>
        div>
    
        <h2>5. 网格布局方案h2>
        <div class="container5">
            <div class="left">div>
            <div class="center">
                左中右三栏布局,中间自适应,网格布局方案左中右三栏布局,中间自适应,网格布局方案左中右三栏布局,中间自适应,网格布局方案
                左中右三栏布局,中间自适应,网格布局方案左中右三栏布局,中间自适应,网格布局方案左中右三栏布局,中间自适应,网格布局方案
            div>
            <div class="right">div>
        div>
    
        <h2>6. 双飞翼(浮动)布局方案h2>
        <div class="container6">
            <div class="main">
                <div class="center">
                双飞翼(浮动)布局方案双飞翼(浮动)布局方案双飞翼(浮动)布局方案双飞翼(浮动)布局方案双飞翼(浮动)布局方案
                双飞翼(浮动)布局方案双飞翼(浮动)布局方案双飞翼(浮动)布局方案双飞翼(浮动)布局方案双飞翼(浮动)布局方案
            div>
            div>
            <div class="left">div>
            <div class="right">div>
        div>
    body>
    html>
    View Code

     

    25.DIV模板引擎

    DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>DIV模板引擎title>
    head>
    
    <body>
        <h1>DIV模板引擎h1>
        <script>
            var Template = function (tempstr, data) {
                var re = /<%([^%>]+)?%>/g,
                    cursor = 0, // 字符串的查找位置
                    reExp = /^\s*(for|if|else|switch|case|break|continue|{|})(.*)?/g,
                    code = 'var arr = [];\n';   
                var add = function (line, flag) { //flag --> 判断是否是JS代码
                    // 第一次:line ==> 我的名字是:
                    code += flag ? line.match(reExp) ? line : 'arr.push(' + line + ');\n'
                        : 'arr.push("' + line.replace(/"/, '\\"') + '");\n';
                }
                while (item = re.exec(tempstr)) {
                    add(tempstr.slice(cursor, item.index));
                    add(item[1], true);
                    cursor = item.index + item[0].length;
                }
                add(tempstr.substring(cursor));
                code += 'return arr.join("");';
                return new Function(code.replace(/[\r\n\t]/g, '')).apply(data);
            }
            
            // var str = '我的名字是:<%this.name%>,年龄是:<%this.profile.age%>,Over!!!';
            // var res = Template(str, {
            //   name: 'Dunizb',
            //   profile: {
            //     age: 22
            //   }
            // });
            // console.log(res);
            
            var str = '我的爱好:<%for(var i in this.hobby){%>'
                + '

    <%this.hobby[i]%>

    ' + '<%}%>'; var res = Template(str, { hobby: ['php', 'java', 'javascript', 'linux', 'python'] }); document.write(res); script> body> html>
    View Code

     

    26.省市两级级联下拉列表

    DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <meta http-equiv="X-UA-Compatible" content="ie=edge">
        <title>省市两级级联下拉列表title>
    head>
    <body>
        <select id="province">
            <option>==请选择省份==option>
        select>
        <select id="city">
            <option>==请选择城市==option>
        select>
    body>
    <script>
        // 准备数据
        var data = [
            {"code" : "0001", "name" : "广东省",
                "cities" : [
                    {"code" : "00010001", "name" : "广州市"},
                    {"code" : "00010002", "name" : "深圳市"},
                    {"code" : "00010003", "name" : "东莞市"}
                ]
            },
            {"code" : "0002", "name" : "湖南省",
                "cities" : [
                    {"code" : "00020001", "name" : "长沙市"},
                    {"code" : "00020002", "name" : "衡阳市"},
                    {"code" : "00020003", "name" : "郴州市"}
                ]
            },
            {"code" : "0003", "name" : "江西省",
                "cities" : [
                    {"code" : "00030001", "name" : "南昌市"},
                    {"code" : "00030002", "name" : "赣州市"},
                    {"code" : "00030003", "name" : "吉安市"}
                ]
            }
        ];
    
        window.onload = function(){
            // 获取省份城市select
            var proSelect = document.getElementById("province");
            for (var i = 0; i < data.length; i++){
                var json = data[i];
                var option = new Option(json.name, json.code, false, false);
                proSelect.add(option);
            }
            // 为proSelect绑定onChange事件
            proSelect.onchange = function(){
                var citySelect = document.getElementById("city");
                // 在下次选择省份之前先清空城市下拉列表
                for (var i = citySelect.length - 1; i > 0; i--){
                    citySelect.remove(i);
                }
                for (var i = 0; i < data.length; i++){
                    var json = data[i];
                    if (json.code == this.value){
                        // 取城市
                        var cities = json.cities;
                        for (var j = 0; j < cities.length; j++){
                            // 获取其中的json
                            var temp = cities[j];
                            var option = new Option(temp.name, temp.code, false, false);
                            citySelect.add(option);
                        }
                    }   
                }
            }
        }
    script>
    html>
    View Code

     

    27.CSS3——打字延迟动画

    DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>打字动画title>
        <style>
            body {background-color: #000;color:green;}
            p {
                width: 27em;      /*这里控制打字的宽度和子长,也可以取消下面的JS注释 */
                font-family: Menlo, Monaco, Consolas, "Courier New", monospace;
                overflow: hidden;
                white-space: nowrap;
                border-right: .05em solid transparent;/*兼容处理*/
                border-right: .05em solid;
                animation: typing 6s steps(16),   
                           caret 1s steps(1) infinite;
            }
            @keyframes typing {
                from { width: 0; }
            }
            @keyframes caret {
                50% { border-right-color: transparent; }
            }
        style>
    head>
    <body>
    <p>Javascript是世界最好的语言,hello world,hello lucas!p>
        <script>
            /*** 此段JS代码的目的是为了动态设置文字的宽度和步长 ****/
    
           // var ps = document.getElementsByTagName("p");
           // for(var i=0 ;i
           //     var len = ps[i].textContent.length;
           //     ps[i].style.width = len + 'em';
           //     ps[i].style.animationTimingFunction = "steps("+len+"),steps(1)";
           // }
        script>
    body>
    html>
    View Code

     

    28.CSS3——文字闪烁动画

    DOCTYPE html>
    <html>
    <head lang="en">
        <meta charset="UTF-8">
        <title>文字闪烁title>
        <style>
            .hightlight {
                width: 500px;
                margin: 100px auto;
                font:700 20px/20px "Microsoft YaHei";
                animation: 1s blink 3 steps(1) ;
            }
            @keyframes blink {
                50% { color: transparent; }
            }
        style>
    head>
    <body>
    <div class="hightlight">hello lucasdiv>
    body>
    html>
    View Code

     

    29.数组与字符串对象相同的方法

    concat()
    indexOf()
    lastIndexOf()
    includes()
    toString()
    slice()
    View Code

     

    30.找出数组最大个数

    //es5写法
    function maxNumber(){
        var arr = [10,29,5]
        document.write(Math.max.apply(null,arr))
    }
    View Code

     

    //es6拓展运算符...
    
    Math.max(...arr)
    View Code
    arr.sort((num1, num2) => {
        return num1 - num2 < 0
    })
    arr[0]
    View Code
    let max = arr[0];
    for (let i = 0; i < arr.length - 1; i++) {
        max = max < arr[i+1] ? arr[i+1] : max
    }
    View Code

     

    31.JS简单数组排序

    function sortNumber(a,b)
    {
        return a - b;  //如果需要降序排序可以把a与b调换即可
    }
    
    var arr = new Array(6)
    arr[0] = "10"
    arr[1] = "5"
    arr[2] = "40"
    arr[3] = "25"
    arr[4] = "1000"
    arr[5] = "1"
    
    document.write(arr + "
    ") document.write(arr.sort(sortNumber))
    View Code

     

        var arr = [1, 7, 10, 4, 6];
        function compare(val1, val2) {
          if(val1 < val2) {
            return -1;
          } else if(val1 > val2) {
            return 1;
          } else {
            return 0;
          }
        };
        arr.sort(compare);
        console.log(arr);
    View Code

     

    32.对数组进行随机排序

    var points = [40, 100, 1, 5, 25, 10];
    document.getElementById("demo").innerHTML = points;  
    
    function myFunction() {
      points.sort(function(a, b){return 0.5 - Math.random()});
      document.getElementById("demo").innerHTML = points;
    }
    View Code

     

    33.为不具备 Iterator 接口的对象提供遍历方法

    function* objectEntries(obj) {
        const propKeys = Reflect.ownKeys(obj);
        for (const propKey of propKeys) {
            yield [propKey, obj[propKey]];
        }
    }
     
    const jane = { first: 'Jane', last: 'Doe' };
    for (const [key,value] of objectEntries(jane)) {
        console.log(`${key}: ${value}`);
    }
    // first: Jane
    // last: Doe
    
    //Reflect.ownKeys() 返回对象所有的属性,不管属性是否可枚举,包括 Symbol。
    View Code

     

    34.嵌套数组的平铺

    function* iterTree(tree) {
      if (Array.isArray(tree)) {
        for(let i=0; i < tree.length; i++) {
          yield* iterTree(tree[i]);
        }
      } else {
        yield tree;
      }
    }
    
    const tree = [ 'a', ['b', 'c'], ['d', 'e'] ];
    
    for(let x of iterTree(tree)) {
      console.log(x);
    }
    // a
    // b
    // c
    // d
    // e
    
    //由于扩展运算符...默认调用 Iterator 接口,所以上面这个函数也可以用于嵌套数组的平铺。
    
    `[...iterTree(tree)] // ["a", "b", "c", "d", "e"]`  
    View Code

     

    35.Markdown源码

      1 
      2 
      3 
      4 
      5     
      6     md转换为html
      7     
      8 
      9 
     10 
     11     
    Markdown转换为HTML的Demo
    12 209 243 251
    252 253254255258259
    256
    257
    260
    261 262 263
    View Code

     

     待续......

     

    你可能感兴趣的:(常用的js代码片段)