JavaScript的日常所得


1、去除字符串左右两边的空格(利用正则实现trim)

  • <!DOCTYPE html>
  • <html lang="en">
  • <head>
  • <meta charset="UTF-8">
  • <title>去除字符串左右两边的空格</title>
  • </head>
  • <body>
  • <input type="text" id="content" placeholder="去除字符串左右两边的空格">
  • <input type="button" value="去除空格" id="trim">
  • <script>
  • function getId(obj) {
  • return document.getElementById(obj);
  • }
  • let myTrim = getId('trim'),
  • content = getId('content');
  • myTrim.onclick = _ => content.value = content.value.replace(/^(s|u00A0)+|(s|u00A0)+1/g,"");
  • </script>
  • </body>
  • </html>

2、区分对象的属性名是对象成员还是原型链继承的

  • var obj = {a:1, b:2}
  • Object.prototype.add = function(a, b) {
  • return a+b
  • }
  • for(let i in obj) {
  • if (obj.hasOwnProperty(i)) {
  • console.log('obj的成员:'+i)
  • } else {
  • console.log('从原型链上继承的:' + i)
  • }
  • }

在异步请求中,我们很多数据都是 json 格式的,就存在 a.b.c.d 获取 d 的值,如果直接使用 a.b.c.d 可以会出现 a 或者 b 或者 c 对象未获取而报错,为了避免问题的存在可以使用 if 判断,但是多个 if 的判断会让简单的程序变得难以理解,下面我利用 &&(js中串行执行,如 x && y, 只有成功执行了 x 才会执行后面的 y, 当 x 未定义时还能第一时间给出报错,将错误第一时间去除 ) 来简化这个问题

  • var a = {b: {c: {d: 1}}}
  • if (a) {
  • if (a.b) {
  • if (a.b.c) {
  • if (a.b.c.d) {
  • console.log(a.b.c.d)
  • }
  • }
  • }
  • }
  • // 下面利用 && 优化一下上面的判断
  • a && a.b && a.b.c && a.b.c.d && console.log(a.b.c.d)
  • 可以将a, b, c, d 任何一个更改一下,就可以看到效果

js 中将不需要的对象(Array,Object等对象类型)释放

对象 = null

js 中将不需要的基本类型 (Number,String,Boolean,Symbol等)释放

基本类型 = undefined

3、node 跨域处理方法

来源张培跃Node.js如何设置允许跨域 下面是我遇到的两种情况

  • server.all('*', function (req, res, next) {
    // IE 浏览器下访问 (req.headers.origin) 可能出现 undefined , 将设置为允许任意域名跨域
    req.headers.origin = (typeof (req.headers.origin) === 'undefined') ? '*' : req.headers.origin
    res.header('Access-Control-Allow-Origin', req.headers.origin)
    res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS')
    if (req.method.toLowerCase() == 'options')
    res.send(200); //让options尝试请求快速结束
    else
    next();
    })
  • server.all('*', function (req, res, next) {
    // 页面在 http://localhost:xxx 此时这个 xxx 并非 port 的值(域名相同但端口不同)时,可以访问 => req.headers.origin.toLowerCase() === 'http://localhost'
    // 当页面在本地打开即路径可能是 (file:///E:/express/mongodb/1.html) => req.headers.origin.toLowerCase() === 'null'
    if (req.headers.origin.toLowerCase() === 'http://localhost' || req.headers.origin.toLowerCase() === 'null') {
    res.header('Access-Control-Allow-Origin', req.headers.origin)
    // 配置验证的头部
    res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
    res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS')
    }
    if (req.method.toLowerCase() == 'options')
    res.send(200); //让options尝试请求快速结束
    else
    next();
    })

4、获取url中"?"符后的字串并转换为对象

  • function GetRequest() {
  • var url = location.search; //获取url中"?"符后的字串
  • var theRequest = new Object();
  • if (url.indexOf("?") != -1) {
  • var str = url.substr(1);
  • strs = str.split("&");
  • for(var i = 0; i < strs.length; i ++) {
  • theRequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
  • }
  • }
  • return theRequest;
  • }

5、计算出字符串中不重复的数量

  • function notRepeatLen(strs) {
  • let obj = {};
  • let len = 0;
  • for (let i=0;i<strs.length;i++){
  • if (!obj[strs[i]]) {
  • obj[strs[i]] = strs[i];
  • len++;
  • }
  • }
  • return len;
  • }
  • let strs= 'aaaaavcaaaaaaaabbbbbcccdbcaadvcxx';
  • console.log(notRepeatLen(strs));
优质内容筛选与推荐>>
1、DDM的成熟在一个细微之处的体现
2、Android-下拉刷新
3、Linux获取权限
4、Hadoop组件Hive配置文件配置项详解
5、鼠标键盘助手1.0.2发布下载


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn