zoukankan      html  css  js  c++  java
  • JS 基本操作

    1.判断数据是否包含某些数据

    var ary=[{age:20,name:"a"},{age:20,name:"b"},,{age:30,name:"c"}]

    我们需要判断数据中否有有年龄为20的数据

    var isExist= ary.some(v=>v.age==20);

    2.对象合并

    var user={name:"ray"};

    var user2=Object.assign({}, user, {
    title: "经理"
    });

    user2 为 {name:"ray",title:"经理"};

    user2 是一个新的用户对象。

    var user={name:"ray"}
    var user2=Object.assign(user, {age:20});

    这种方式和第一种方式不同在于,user 和 user2 是同一个对象。

    3.数组是否包含某个数据

    var users=["a","b"];

    var isExist=users.includes("a");

    4.数组遍历

    使用 entries 进行遍历

    var users=[{name:"a",age:20},{name:"b",age:20},{name:"c",age:30}]
    for (const [i, v] of users.entries()) {
    if (v.age === 20) {
    users.splice(i, 1)
    //break
    }
    }
    console.info(users)

    5.获取数据在数组中的索引

    var ary=["a","b","c"]

    var idx=ary.indexOf("c");

    idx 为2.

     6.过滤数组的数据

    var ary=[{age:20,name:"a"},{age:20,name:"b"},{age:30,name:"c"}]

    var ary2=ary.filter(v=>v.age==20);

     这个是过滤年龄为20的数据。

    var ary3=ary.filter(function(v){return v.age==20})

    使用函数效果是一样的。

    7.三个点操作符

    ... 的作用是将数组转化成 使用逗号分隔的参数序列。

    比如:

    var a=[1,2,3];

    var b=[4,5];
    a.push(...b);

    那么a 就变成了 [1,2,3,4,5]

    1.合并数组

    var a=[3,4];

    var b=[1, 2, ...a];

    b 变成了 [1,2,3,4];

    2.日期参数

    var date=[2014,5,16];
    var d=new Date(...date);

    3.将字符串转成数组

    [...'你好2'].length 显示长度为3

    8. nodejs 的path reslove 解释

    作用:path.resolve() 该方法将一些的 路径/路径段 解析为绝对路径。

    语法:path.resolve( [from…],to )

    说明:将参数to位置的字符解析到一个绝对路径里,[from … ]为选填项,路径源;

    用法:

    var path = require("path")     //引入node的path模块
    
    path.resolve('/foo/bar', './baz')   // returns '/foo/bar/baz'
    path.resolve('/foo/bar', 'baz')   // returns '/foo/bar/baz'
    path.resolve('/foo/bar', '/baz')   // returns '/baz'
    path.resolve('/foo/bar', '../baz')   // returns '/foo/baz'
    path.resolve('home','/foo/bar', '../baz')   // returns '/foo/baz'
    path.resolve('home','./foo/bar', '../baz')   // returns '/home/foo/baz'
    path.resolve('home','foo/bar', '../baz')   // returns '/home/foo/baz'

    总结:从后向前,若字符以 / 开头,不会拼接到前面的路径;若以 ../ 开头,拼接前面的路径,且不含最后一节路径;若以 ./ 开头 或者没有符号 则拼接前面路径;

    9.非常简洁的构建树形数据代码

    我们在开发中经常会需要将一个数组的有父子关系的数据,转换成 一个树结构。

    下面的代码可以很简单的实现这个功能。

    var list=[
              {id:1,parentId:0,name:"一级菜单A",rank:1},
              {id:2,parentId:0,name:"一级菜单B",rank:1},
              {id:3,parentId:0,name:"一级菜单C",rank:1},
              {id:4,parentId:1,name:"二级菜单A-A",rank:2},
              {id:5,parentId:1,name:"二级菜单A-B",rank:2},
              {id:6,parentId:2,name:"二级菜单B-A",rank:2},
              {id:7,parentId:4,name:"三级菜单A-A-A",rank:3},
              {id:8,parentId:7,name:"四级菜单A-A-A-A",rank:4},
              {id:9,parentId:8,name:"五级菜单A-A-A-A-A",rank:5},
              {id:10,parentId:9,name:"六级菜单A-A-A-A-A-A",rank:6},
              {id:15,parentId:0,name:"一级菜单C",rank:1},
              {id:16,parentId:0,name:"一级菜单C",rank:1},
              {id:17,parentId:0,name:"一级菜单C",rank:1},
              {id:18,parentId:0,name:"一级菜单C",rank:1},
              {id:19,parentId:0,name:"一级菜单C",rank:1},
              {id:20,parentId:0,name:"一级菜单C",rank:1},
              {id:37,parentId:0,name:"一级菜单C",rank:1},
              {id:38,parentId:0,name:"一级菜单C",rank:1},
              {id:39,parentId:0,name:"一级菜单C",rank:1},
              {id:40,parentId:0,name:"一级菜单end",rank:1}
            ];
    var tmp =list.filter(father=>{                      // 循环所有项,并添加children属性
              let branchArr = list.filter(child=>father.id == child.parentId);       // 返回每一项的子级数组
              branchArr.length>0 ? father.children=branchArr : ''   //给父级添加一个children属性,并赋值
              return father.parentId==0;      //返回第一层
            });
    console.info(tmp)

     10.js map 方法使用

    var ary=
    [{"groupId":1,"hasChild":0,"name":"A","alias":"A","parentId":0},{"groupId":2,"hasChild":2,"name":"B","alias":"B","parentId":0}];
    ary.map(o=>{
     o.isLeaf=o.hasChild==0
    })
    console.info(ary)

    map的作用是遍历数组,允许数组中的元素操作,将数组进行返回。

  • 相关阅读:
    linux学习笔记----权限与命令之间的关系(极重要)
    linux学习笔记----文件与目录管理
    Linux文件权限与目录配置
    linux:基本命令
    Java:正则表达式
    SDIBT 3237 Boring Counting( 划分树+二分枚举 )
    山东省第四届ACM大学生程序设计竞赛解题报告(部分)
    poj 3522 Slim Span (最小生成树kruskal)
    poj 1236 Network of Schools(又是强连通分量+缩点)
    poj 2762 Going from u to v or from v to u?(强连通分量+缩点重构图+拓扑排序)
  • 原文地址:https://www.cnblogs.com/yg_zhang/p/10875932.html
Copyright © 2011-2022 走看看