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的作用是遍历数组,允许数组中的元素操作,将数组进行返回。

最新文章

  1. FFT小总结
  2. python3验证码机器学习
  3. MapReduce的输入输出格式
  4. Matlab编程实例(1) 移动平均
  5. Spark Streaming揭秘 Day22 架构源码图解
  6. ThinkPHP URL模式和URL重写
  7. linux教程:配置Tomcat开机启动
  8. Appnium+python实现手势密码为什么总是报错
  9. QT 下把编辑框内的中文字符转换为 char*
  10. Google开源的Deep-Learning项目word2vec
  11. 针对IE的CSS样式hack
  12. MySql 加锁问题
  13. docker使用教程
  14. [HackerRank]New Year Chaos[UNDONE]
  15. angular 2+ 变化检测系列二(检测策略)
  16. RabbitMQ全网资料收集
  17. 前端页面播放 rtmp 流与 flv 格式视频文件
  18. 树莓派连接不上WiFi
  19. 单机多实例mysq 8.0l部署安装
  20. 洛谷P3602 Koishi Loves Segments 贪心

热门文章

  1. udev只能修改Linux 网口名称,无法修改/dev目录下的设备名称
  2. sort排序与二分查找
  3. PS 个人常用功能
  4. Vue基础项目模板
  5. Linux常用基础(二)
  6. Linux内核中的IS_ERR()实现
  7. springmvc流程图以及配置
  8. Scala Collection Method
  9. web开发-心路历程
  10. Oracle批量、大量Update方法总结