zoukankan      html  css  js  c++  java
  • javascript——常用基础API部分方法、面试题集合

    javascript——常用基础API部分方法(函数)集合

    字符串转化成驼峰表示法

    将字符串foo="get-elment-by-id"转化成驼峰表示法"getElementById"

    function combo(msg) {
      // 分割成字符串数组
      var arr = msg.split("-");
      // 从数组第二位开始遍历,首字母改为大写
      for (var i = 1; i < arr.length; i++) {
        arr[i] = arr[i].charAt(0).toUpperCase() + arr[i].substr(1, arr[i].length - 1);
      }
      // 组合成字符串
      msg = arr.join("");
      return msg;
    }
    
    combo("get-elment-by-id");	// getElmentById
    

    统一日期格式 YYYY-MM-DD

    以 YYYY-MM-DD 的方式,输出今天的日期

    var d = new Date();
    var year = d.getFullYear();
    // 获取月份,记得加一
    var month = d.getMonth() + 1;
    // 10以下变成两位
    month = month < 10 ? '0' + month : month;
    var day = d.getDate();
    // 10以下变成两位
    day = day < 10 ? '0' + day : day;
    
    console.log(year + '-' + month + '-' + day);  // 2020-02-29
    

    特殊字符转义

    为了保证页面输出安全,我们经常需要对一些特殊的字符进行转义,请写一个函数 escapeHtml,将<, >, &, “进行转义

    function escapeHtml(str) {
      return str.replace(/[<>"&]/g, function (match) {
        switch (match) {
          case "<":
            return "&lt;";
          case ">":
            return "&gt;";
          case "&":
            return "&amp;";
          case """:
            return "&quot;";
        }
      });
    }
    
    escapeHtml("<div>");	// &lt;div&gt;
    

    生成几个不同的随机数

    生成 5 个不同的随机数,每生成一次就和前面的所有数字相比较,如果有相同的,则放弃当前生成的数字

    var num1 = [];
    for (var i = 0; i < 5; i++) {
      // 生成随机数,范围是 [1, 10]
      num1[i] = Math.floor(Math.random() * 10) + 1;
      for (var j = 0; j < i; j++) {
        // 如果重复,重新进行本次循环
        if (num1[i] == num1[j]) {
          i--;
        }
      }
    }
    
    console.log(num1);	// 随机数组 [9, 1, 7, 10, 6]
    

    范围内随机选取一组数字

    用 js 实现随机选取 10–50之间的 10 个数字,存入一个数组,并排序。

    function randomNub(aArray, len, min, max) {
      // 不符合条件
      if (len >= (max - min)) {
        return '超过' + min + '-' + max + '之间的个数范围' + (max - min - 1) + '个的总数';
      }
      // 达到数量后排序
      if (aArray.length >= len) {
        aArray.sort(function (a, b) {
          return a - b
        });
        return aArray;
      }
      // 生成随机数
      var nowNub = parseInt(Math.random() * (max - min - 1)) + (min + 1);
      // 防止重复
      for (var j = 0; j < aArray.length; j++) {
        if (nowNub == aArray[j]) {
          randomNub(aArray, len, min, max);
          return;
        }
      }
      aArray.push(nowNub);
      // 递归循环
      arguments.callee(aArray, len, min, max);
      return aArray;
    }
    
    var arr = [];
    randomNub(arr, 10, 10, 50);	// 随机数组[20, 26, 28, 29, 30, 35, 40, 41, 44, 49]
    

    提取URL中的各个GET参数

    有这样一个 URL:http://item.taobao.com/item.htm?a=1&b=&c=xxx&d,请写一段 JS 程序提取 URL中的各个 GET 参数(参数名和参数个数不确定),将其按 key-value 形式返回到一个 json 结构中

    function serilizeUrl(url) {
      var urlObject = {};
      // 是否有'?'
      if (/?/.test(url)) {
        // 截取'?'以后的字符串,也可结合location对象获取
        var urlString = url.substring(url.indexOf("?") + 1);
        // 分割成字符串数组 ['a=1', 'b=', 'c=xxx', 'd']
        var urlArray = urlString.split("&");
        // 遍历 再次分割 [['a', '1'], ['b', ''], ['c', 'xxx'], ['d']]
        for (var i = 0, len = urlArray.length; i < len; i++) {
          var urlItem = urlArray[i];
          var item = urlItem.split("=");
          urlObject[item[0]] = item[1];
        }
        return urlObject;
      }
      return null;
    }
    
    var url = "http://item.taobao.com/item.htm?a=1&b=&c=xxx&d";
    serilizeUrl(url);	// {a: "1", b: "", c: "xxx", d: undefined}
    

    清除字符串前后的空格

    写一个 function,清除字符串前后的空格。(兼容所有浏览器)

    if (!String.prototype.trim) {
      String.prototype.trim = function () {
        return this.replace(/^s+/, "").replace(/s+$/, "");
      }
    }
    var str = " 	
     test string ".trim();
    console.log(str == "test string");	// true
    

    统计出现最多的字符

    判断一个字符串中出现次数最多的字符,统计这个次数

    // 保存出现的字符并计次数
    var str = 'asdfssaaasasasasaa';
    var json = {};
    for (var i = 0; i < str.length; i++) {
      if (!json[str.charAt(i)]) {
        json[str.charAt(i)] = 1;
      } else {
        json[str.charAt(i)]++;
      }
    };
    // 查询出现次数最多的字符
    var iMax = 0;
    var iIndex = '';
    for (var i in json) {
      if (json[i] > iMax) {
        iMax = json[i];
        iIndex = i;
      }
    }
    
    console.log('出现次数最多的是:' + iIndex + ',出现' + iMax + '次');
    

    获取非行间样式

    写一个获取非行间样式的函数

    function getAttr(obj, attr) {
      var style;
      if (obj.currentStyle) {   //当有这个属性的时候currentStyle
        style = obj.currentStyle[attr]; //兼容IE
      }
      else {
        style = getComputedStyle(obj, false)[attr]; //主流浏览器
      }
      return style;
    }
    
    var box = document.getElementById('box');
    getAttr(box, 'width');	// 200px
    

    数字转化成RMB形式

    // 转换成字符串并反转
    function re(str) {
      str += '';
      return str.split("").reverse().join("");
    }
    // 转换为RMB格式
    function toRMB(num) {
      var tmp = '';
      for (var i = 1; i <= re(num).length; i++) {
        tmp += re(num)[i - 1];
        if (i % 3 == 0 && i != re(num).length) {
          tmp += ',';
        }
      }
      return re(tmp);
    }
    
    toRMB(1234567);	// 1,234,567
    

    数组数字去重

    用原型,去掉数组中重复的数字

    Array.prototype.unique = function () {
      var n = []; //一个新的临时数组
      for (var i = 0; i < this.length; i++) //遍历当前数组
      {
        //如果当前数组的第 i 已经保存进了临时数组,那么跳过,
        //否则把当前项 push 到临时数组里面
        if (n.indexOf(this[i]) == -1) {
          n.push(this[i]);
        }
      }
      return n;
    }
    
    var arr=[1,2,3,3,4,4,5,5,6,1,9,3,25,4];
    arr.unique();	// [1, 2, 3, 4, 5, 6, 9, 25]
    

    阶乘

    原型方法

    Number.prototype.N = function () {
      var re = 1;
      for (var i = 1; i <= this; i++) {
        re *= i;
      }
      return re;
    }
    var num = 5;
    
    num.N();	// 120
    

    递归方法

    function jc(n){
      if(n<1) return 1;
      return n*arguments.callee(n-1);
    }
    
    jc(5);		// 120
    

    计算字符串字节数

    function strlen(s) {
      if (!arguments.length || !s) return 0;
      var len = 0;
      for (var i = 0; i < s.length; i++) {
        if (s.charCodeAt(i) > 255) len += 2; else len += 1; //charCodeAt()得到的是 unCode 码
      } //汉字的 unCode 码大于 255bit 就是两个字节
      return len;
    }
    
    strlen('哈哈123');	// 7
    

    拆分字符串

    specify(‘hello,world’)//=>’h,e,l,l,o,w,o,r,l,d’实现 specify 函数

    function specify(str) {
      var tempArray = Array.prototype.filter.call(str, function (value) {
        return value >= 'A' && value <= 'z' && value != "_";
      });
      return tempArray.join(",");
    }
    
    specify("he____*(%$# !!!))))))llo,Wo@@@rld");	// h,e,l,l,o,W,o,r,l,d
    

    FF 与 IE 中阻止事件冒泡

    function stopPropagation(e) {
      e = e || window.event;
      if (e.stopPropagation) { //W3C 阻止冒泡方法
        e.stopPropagation();
      } else {
        e.cancelBubble = true; //IE 阻止冒泡方法
      }
    }
    

    用+-×÷和Math实现三目运算

    只允许使用 + - * / 和 Math.* ,求一个函数 y = f(x, a, b);当 x > 100 时返回 a 的值,否则返回 b 的值,不能使用 if else 等条件语句,也不能使用|,?:,数组

    function f(x, a, b) {
      var temp = Math.ceil(Math.min(Math.max(x - 100, 0), 1));
      return a * temp + b * (1 - temp);
    }
    
    f(10, 1, 2);	// 2
    

    arguments实现加法函数

    写一个函数可以计算 sum(5,0,-5);输出 0; sum(1,2,3,4);输出 10;

    function sum() {
      var result = 0;
      var len = arguments.length;
      for (var i = 0; i < len; i++) {
        var num = arguments[i];
        if (typeof num == 'number') {
          result += num;
        }
      }
      return result;
    }
    
    sum(5,0,-5);	// 0
    sum(1,2,3,4);	// 10
    
    完结~
  • 相关阅读:
    黑客术语1
    leetcode笔记--3 Niim game
    台湾ML笔记--1.2 formalize the learning probelm
    台湾ML笔记--1.1什么时候适合使用ML
    leetcode笔记--2 reverse string
    leetcode笔记--1 two-sum
    数据挖掘导论笔记1
    python基础----ipython快捷键
    记录新的开始
    编译器错误消息: CS1617: 选项“6”对 /langversion 无效
  • 原文地址:https://www.cnblogs.com/lwlblog/p/12632396.html
Copyright © 2011-2022 走看看