一些js方法的使用

1.快速的让一个数组乱序

var arr = [1,2,3,4,5,6,7,8,9,10];

arr.sort(function(){ return Math.random-0.5 }) //无规则排序

arr.sort(function(a,b){ return a-b }) //从小到大

arr.sort(function(a,b){ return b-a }) //从大到小

2.更短的数组去重写法

 

// 1.去除数组的重复成员(es6新增)
[...new Set(array)]

例如:

var arr= [2,"12",2,12,1,2,1,6,12,13,6];

 

arr=[...new Set(arr)];

 

console.log(arr) //[2, "12", 12, 1, 6, 13]

//2. indexOf方法去重
var arrN=[];
for(var i=0;i<arr.length;i++){
    if(arrN.indexOf(arr[i])<0){
        arrN.push(arr[i])
    }
}

console.log(arrN) //[2, "12", 12, 1, 6, 13]

 

// 3.相邻数比较法(原理,先排序,一样大的会排在一起,这样一比较,删除相同的,有个问题就是数组必须是用一类型

否则,这样一个数组[1, 1, 12, "12", 12, 13, 2, 2, 2, 6, 6],用以下方法 ==有7个值,===有5个值)

 

arr.sort();
   for(var i=0;i<arr.length;i++){
    if(arr[i]==arr[i+1]){
        arr.splice(i,1);
        i--;
    }
    

console.log(arr) //[2, "12", 12, 1, 6, 13]

 

 

 

3.JavaScript replace() 方法:

 

        定义和用法: replace() 方法用于在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串。

 

例如: $('input[name="tags"]').val()--->‘标签1’,‘标签2’,‘标签3’,‘标签4’

    需要得到的结果是 ‘标签1’ ‘标签2’ ‘标签3’ ‘标签4’

即将字符串的逗号换成空格,这里就通过replace()方法

 

    var x= $('input[name="tags"]').val().replace(/,/g,' ');

      这里x得到的就是 ‘标签1’ ‘标签2’ ‘标签3’ ‘标签4’

    

 

 

4.计算数组中一个值连续出现的次数:

(注意:如果存在情况,需要比较的数组只有一个值的时候,下面的方法会出现无穷小的情况,所以需要先判断,数组长度是否是一个的逻辑)

var data = [3, 1, 2, 2, 2, 1, 1, 1, 1, 1,1, 2, 2, 2, 2,2,2,2,2]


function getTheMax(arr) {
    var val = 1;
    var newarr = [];
    for (var i = 0; i < arr.length - 1; i++) {
        if (arr[i] === arr[i + 1] ) {
            val++
        } else {
            val = 1
        }
        newarr.push(val)
    }
    var maxs = Math.max.apply(null, newarr)
    return maxs
}

console.log(getTheMax(data))   //得到的结果是8,2出现的最多,次数是8

 

以上情况,如果要计算一个数连续出现的次数最多的话,例如,1在这里连续出现次数最多的是,按照如下写法:

var data = [3, 1, 2, 2, 2, 1, 1, 1, 1, 1,1, 2, 2, 2, 2,2,2,2,2]


function getTheMax(arr) {
    var val = 1;
    var newarr = [];
    for (var i = 0; i < arr.length - 1; i++) {
        if (arr[i] === arr[i + 1] && arr[i]===1) {
            val++
        } else {
            val = 1
        }
        newarr.push(val)
    }
    var maxs = Math.max.apply(null, newarr)
    return maxs
}
console.log(getTheMax(data))  //结果是6,1连续出现次数最多的是6次

 

for循环里面 加一个定时器打印值只能打印最后值的问题:

下面的for循环,打印出来的是10个10,需求是打印0-9

for (var i = 0; i < 10; i++) {
    setTimeout(function() {
        console.log(i)
    }, 0)
}

 

解决办法:

1.用let定义,不用var

2.如下编写

for (var i = 0; i < 10; i++) {
    (function(j) {
        setTimeout(function() {
            console.log(j)
        }, 0)
    })(i)


}

 

5.在事件里面自动触发select的change事件

$('#sex').val(data.sex).trigger('change');//根据后台返回的字段,来触发性别选择。

6.textarea回车事件触发,调用搜索事件,但是文本框不让换行

   //回车事件绑定
    $('textarea').bind('keydown', function(event) {
        if (event.keyCode == "13") {
            //回车执行查询
               search();
            return false;
            event.preventDefault();
        }
    });

7.给一个接口后面 加随机数,防止浏览器缓存JS文件

 var goUrl = "doupan.js?tk=" + Math.random();

8.eval()--->将字符串转成函数

  function test() {
   console.log(9999)
  }

  eval('test()');

结果:页面打印 999

 定义和用法:

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

语法

eval(string)

 9. reload()

reload() 方法用于重新加载当前文档。

语法:

location.reload(force)

window.location.reload()

9.hasOwnProperty()方法:

hasOwnProperty()函数用于指示一个对象自身(不包括原型链)是否具有指定名称的属性。如果有,返回true,否则返回false。

遍历的时候,滤掉原型链上其它对象 

 

10.一个对象是不是空对象

一、js判断一个对象是否为空对象

1)通过JSON自带的.stringify方法来判断

//JSON自带的stringify方法,将json转成json字符串
var c = {}; 
if(JSON.stringify(c) == "{}"){ 
     console.log("是空对象");
} 

2)for...in...遍历属性



//for in
var a = {};
var b = {foo:'bar'};
function aa(a){
  for(var attr in a){
      return true;
   }
  return false;
}


3)ES6新增的Object.keys() ,判断对象keys长度是否为0

if(Object.keys(obj).length==0){
     console.log("es6 通过判断key的长度是否为0:是空对象");
   }else{
     console.log("es6 通过判断key的长度是否为0:不是空对象");
   }


二、通过jquery提供的isEmptyObject(obj)

jQuery.isEmptyObject({});//true
jQuery.isEmptyObject({'foo':'bar'});//false

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值