经常使用的js代码小结

在项目中经常会使用到一些小的js代码段,有些用法有时候自己有点犹豫会查API,有些是要我们自己手动写几个demo来搞清楚的,下面是我经常 在工作中使用到的demo。

关于数组的:

1,查询数组中重复的元素,以及重复的次数

var ary = ["1", "33", "22", "1", "1", "22", "22", "33", "22", ‘44‘];
        var res = [];
        ary.sort();
        console.log(ary);
        for (var i = 0; i < ary.length;) {

            var count = 0;
            for (var j = i; j < ary.length; j++) {

                if (ary[i] == ary[j]) {
                    count++;
                }

            }
            if (count > 1){
                res.push([ary[i], count]);
            }
            i += count;

        }
        //res 二维数维中保存了 值和值的重复数
        for (var i = 0; i < res.length; i++) {
            console.log("值:" + res[i][0] + "           重复次数:" + res[i][1] + "<br/>");
        }

2,数组中sort()方法的使用:

demo1:

var objectList2 = new Array();
        function WorkMate(name,age){
            this.name=name;
            var _age=age;
            this.age=function(){
                if(!arguments)
                {
                    _age=arguments[0];}
                else
                {
                    return _age;}
            }

        }
        objectList2.push(new WorkMate(‘jack‘,20));
        objectList2.push(new WorkMate(‘tony‘,25));
        objectList2.push(new WorkMate(‘stone‘,26));
        objectList2.push(new WorkMate(‘mandy‘,23));
        //按年龄从小到大排序
        objectList2.sort(function(a,b){
            return a.age()-b.age();
        });
        for(var i=0;i<objectList2.length;i++){
            document.writeln(‘<br />age:‘+objectList2[i].age()+‘ name:‘+objectList2[i].name);
        }

demo2:

var arrDemo = new Array();

 arrDemo[0] = 10;
 arrDemo[1] = 50;
 arrDemo[2] = 51;
 arrDemo[3] = 100;

 arrDemo.sort(); //调用sort方法后,数组本身会被改变,即影响原数组

 alert(arrDemo);//10,100,50,51 默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序

 arrDemo.sort(function(a,b){return a>b?1:-1});//从小到大排序

 alert(arrDemo);//10,50,51,100

 arrDemo.sort(function(a,b){return a<b?1:-1});//从大到小排序

 alert(arrDemo);//100,51,50,10

结论:

(1).数组调用sort方法后,会影响本身(而非生成新数组)

(2).sort()方法默认是按字符来排序的,所以在对数字型数组排序时,不可想当然的以为会按数字大小排序!

(3).要改变默认的sort行为(即按字符排序),可以自行指定排序规则函数(如本例所示)

3、数组的indexOf与splice

function testIndexOfAndSplice() {
        var arr1 = [1, 2, 3, 4, 5];
        var index = arr1.indexOf(5);

        var arr = arr1.splice(index,1);
        console.log(arr1);
        console.log(arr);
    }

4、数组中的concat

function testConcat(){
        var arr1 = [1,2,3,4,5];
        var arr2 = [‘lw‘,‘Jason‘,‘tx‘];
        var arr = arr1.concat(arr2);
        console.log(arr);
    }

关于Date:

function testDate() {
        /*var time1 = "1995-11-17";
        var date1 = new Date(time1);
        var date2 = new Date(1995, 11, 20);
        var difference = date1 - date2;
        console.log(difference);
        console.log( parseInt((difference / (((24 * 60) * 60) * 1000))));*/
        var time = new Date();
        time.setHours(19);
        time.setMinutes(20);
        var difference = time - new Date();
        console.log(difference);
        console.log( parseInt((difference / (((24 * 60) * 60) * 1000))));
        console.log(time.getTime() - new Date().getTime());
    }

关于正则表达式:

var target = ‘icon_skill‘;
        var target1 = ‘icon_wrong‘;
        var postfix= ‘_png‘;
        var str = ‘icon_skill_haha_nono_fafa_png‘;
        var reg = new RegExp(‘^‘+target+‘[a-zA-Z\\_]*‘+postfix+‘$‘);
        var reg1 = new RegExp(‘^‘+target1+‘[a-zA-Z\\_]*‘+postfix+‘$‘);
        var res = reg.exec(str);
        console.log(res[0]); //icon_skill_haha_nono_fafa_png

        res = reg1.exec(str);
        console.log(res); //null

关于JSON

1、stringify

function testStringify(){
        var arr1 = [1,2,3,4,5];
        var arr2 = [‘lw‘,‘Jason‘,‘tx‘];
        var name = "Jason Li";
        var obj = {};
        obj.arr1 = arr1;
        obj.arr2 = arr2;
        obj.name = name;

        var lw = {};
        lw.name = "lw";
        lw.report = JSON.stringify(obj);
        console.log(obj);
        console.log("EEEE");
        console.log(JSON.stringify(lw));     //    {"name":"lw","report":"{\"arr1\":[1,2,3,4,5],\"arr2\":[\"lw\",\"Jason\",\"tx\"],\"name\":\"Jason Li\"}"}
    }

2、parse

function testParse(){

        var str = "{\"result\":\"defender\",\"BATTLE_START\":[{\"content\":[{\"value\":{\"changeModel\":118},\"target\":\"3165150378984059\"}],\"skill\":\"model1\",\"owner\":\"3165150378984059\"},{\"content\":[{\"value\":{\"changeModel\":118},\"target\":\"3164944220554938\"}],\"skill\":\"model1\",\"owner\":\"3164944220554938\"}],\"type\":\"ARENA\"}";
        var strObj = JSON.parse(str);
        console.log(strObj);
        console.log("EEEE");
        //console.log(JSON.parse(strObj));
    }
时间: 2024-10-12 01:40:34

经常使用的js代码小结的相关文章

js isArray小结

原文:[转载]js isArray小结 在日常开发中,我们经常需要判断某个对象是否是数组类型的,在js中检测对象类型的常见的方法有几种: 1.typeof操作符.对于Function.String.Number.Undefined这几种类型的对象来说,不会有什么问题,但是针对Array的对象就没什么用途了: Js代码  isArray小结" alt="收藏代码" src="http://www.iteye.com/images/icon_star.png"

JS代码存放的位置

方式一:直接在HTML网页中编写JS代码,直接使用<script></script>标签包裹起来,可以放在html里面的任何位置,推荐放在<head></head>区域中.该方式JS代码冗余,不利于程序的维护 方式二:单独编写一个js文件(.js),在使用的html/jsp中通过<script src="index.js"> </script>标签引入该技术文件,该方式实现了js代码和HTML页面的分离,有利于程序

20行js代码制作网页刮刮乐

分享一段用canvas和JS制作刮刮乐的代码,JS部分去掉注释不到20行代码效果如下 盖伦.jpg 刮刮乐.gif HTML部分 <body> ![](img/gailun.jpg) <canvas id="canvas" width="400" height="300"></canvas> </body> 没什么要特别注意的为了效果加了些CSS样式 CSS部分 <style type=&qu

如何才能优雅地书写JS代码

第一:关于匿名函数的使用 要避免全局变量泛滥, 可以考虑使用匿名函数, 把不需要在外部访问的变量或者函数限制在一个比较小的范围内. 例如以下代码: <script> function func1(){ var list = ["a", "b", "c"]; for(var i = 0; i < list.length; i++){ //.. }; } func1(); // 自动运行 </script> 上述代码的作

ReactMix框架,让你实现一套js代码,基于ReactNative在H5,App都能完美跑起来,Write Once,Run Anywhere

ReactNative框架推出已经有一段时间了,相信很多小伙伴都在尝试实现Write Once, Run Anywhere的梦想,比如淘宝的ReactWeb等等,但是这些框架都局限于因为ReactNative本省的局限性,比如不支持CSS,不支持DOM操作,不支持选择器等等,而没有办法实现Js代码的全平台统一,现在通过全新的ReactMix框架,你可以让你的代码不仅可以在ReactNative上跑起来,实现安卓和iOS代码的统一,而且同样一份代码也可以在PC,H5上跑起来,到底有多神气?让我们来

JS 代码调试经验总结(菜鸟必读)

前言:不知不觉写了很多,希望你能耐心看完这篇文章 任何一个编程者都少不了要去调试代码,不管你是高手还是菜鸟,调试程序都是一项必不可少的工作.一般来说调试程序是在编写代码之后或测试期修改Bug 时进行的,往往在调试代码期间更加能够体现出编程者的水平高低以及分析问题的准确度.不少初学者在寻找错误原因时,总是不得要领,花费了大量时间却无法解决一些最终证明是相当简单的Bug. 在长期解答 zTree 相关问题时,也的确发现很多的问题其实不算什么问题,仅仅是编程者不会调试造成的,通过自己日常工作观察,这里

鼠标选择文字事件js代码,增加层问题

在页面中增加一个js代码,当用户用鼠标选择文字(鼠标拖动涂蓝文字)时,会出现一个层,提示与这个选择文字有个的信息<script type="text/javascript">document.onmouseup = document.ondbclick= function(){ var txt; if(document.selection){  txt = document.selection.createRange().text }else{  txt = window.

node js 修改js代码自动发布到服务器

重新修改js代码后,不需要手动重启服务.需要安装supervisor 工具替代手工. 在联网的前提下在cmd中输入npm install supervisor -g 命令行会自动安装supervisor 工具 然后启动服务时就不用node  XXX.js  使用supervisor XXX.js后 修改js后不再需要手动重启node服务,supervisor 会自动发布最新修改的代码.

如何撤销浏览器注入JS代码的执行效果?

如何撤销浏览器注入JS代码的执行效果? 可用的方法: 放弃所有本地修改,整体重新reload当前的URL(这相当于大粒度的savepoint/snapshot,应确保用户数据/视图状态能够按期望恢复) 内核实现immutable的DOM树,对DOM树的每个修改均产生一个新的版本快照,修改可以直接回退,比如提供一个document.revertTo方法 immutable数据结构上实现MVCC事务,事务本身的执行是原子的,但是并没有考虑用户如何手工反转事务 实现细粒度的对应每个业务逻辑层次写操作的