zoukankan      html  css  js  c++  java
  • js运算符的一些特殊应用

    作者: 小文
    来源: http://www.cnblogs.com/daysme/
    时间: 2017/3/2 17:21:03

    本文集合了了js运算符的一些特殊应用。
    js位运行符的运用。
    js运算符的使用技巧。

    是否包含指定字符: ~

    ~"str1".indexOf("str2")

    str1 被查找的字符串
    str2 查找的字符串
    如果 str1 不含有 str2 ,则返回数字 0 。

    例:

    var str1='abc';
    var str2='a';
    if(~str1.indexOf(str2)){
      console.log('有'+str2) //有a
    }else{
      console.log('无'+str2)
    }
    

    取整: |

    num | 0

    num 整数

    例:

    1.3 | 0 //1
    

    取半: >>

    num >> 1

    num 整数
    例:求 50 的 1/2

    50 >> 1 //25
    

    有除号 / 干嘛不用呢?多好呀: 50/2 //25

    成长值评级: ||

    需求1:
    成长值为5是1星;
    成长值为10是2星;
    成长值为12是3星;
    成长值为15是4星;
    其他都是0星。

    ({'5':1,'10':2,'12':3,'15':4}[val] || 0);

    val 成长值。

    判断奇偶: &

    num & 1

    num 整数

    例:

    var num=3;
    if (num & 1) {
    	console.log("num是奇数"); //num是奇数
    } else {
    	console.log("num是偶数");
    }
    

    交换两个数字的值: ^=

    使用位运行符:

    var num1 = 1, num2 = 2;
    num1 ^= num2;
    num2 ^= num1;
    num1 ^= num2;
    console.log(num1,num2); //2 1
    

    使用数组:

    var num1 = 1, num2 = 2;
    num1 = [num2, num2 = num1][0];
    console.log(num1,num2); //2 1
    

    2的n次方: << 和 **

    1 << n-1

    使用位运行符:

    2的n次方
    例:2的3次方:1<<3 //8

    使用幂运行符:

    个人觉得这个不如直接使用 的方式好。

    x的y次方: x**y

    例:2的3次方:2**3 //8

    方法比较:

    使用 << 的方式可以支持负数,** 需要用括号否则出错。
    使用 ** 比较直观,没研究过 << 方法的任意数的任意次方的规律。

    1<<3 //8
    2**3 //8
    -1<<3 //-8
    -2**3 // 报错
    -(2**3) //-8
    3<<2 //12 错误
    3**2 //9 正确
    

    是否是指定字符串开头: ! 和 ^

    !str1.indexOf("str2")

    例:

    var str1='abc';
    var str2='a';
    if(!str1.indexOf(str2)){
      console.log('是开头')
    }else{
      console.log('不是开头')
    }
    

    使用正则方式

    /^a/.test('abc') //a开头,true
    /c$/.test('abc') //c结尾,true
    

    字符串转数字: +

    +str

    例:

    var str='123';
    typeof(str) //string
    typeof(+str) //number
    

    转为 Boolean 值: !!

    !!obj

    例:

    !!'text' //true
  • 相关阅读:
    字符串-串的最大表示-后缀数组-1163. 按字典序排在最后的子串
    动态规划-买卖股票的最佳时机 V
    贪心-到达终点数字
    贪心-优先队列-模拟-任务调度器
    滑动窗口-区间统计
    快速排序-无序数组K小元素
    POJ 2299 Ultra-QuickSort【树状数组 ,逆序数】
    POJ 2976 Dropping tests【二分 最大化平均值】
    POJ 1064 Cable master 【二分答案】
    POJ 3190 Stall Reservations 【贪心 优先队列】
  • 原文地址:https://www.cnblogs.com/daysme/p/6492398.html
Copyright © 2011-2022 走看看