数组

1 map       映射      一个对一个

如:分数数组[34,56,78,99]映射为[不及格,不及格,及格,及格];

  等级数组[23,56,89]映射为

  [

    {name:'lmx',level:1,role:1},

    {name:'zhangsan',level:88,role:3},

    {name:'lisi',level:33,role:2},   

  ];

代码示例一:

let score=[34,56,78,99];
let res=score.map(item=>item>=60?'及格':'不及格');
alert(res);

代码示例二:

let arr=[12,5,9];

let res=arr.map(function(item){
return item*2;
}); alert(res); //简写
let result=arr.map(item=>item*2);
alert(result);

2 reduce        汇总    一堆出来一个

算总数       [1,2,3] => 6

算平均数         [1,2,3] => 2

代码示例一:算总数

// reduce参数还原
let arr=[12,69,180,8763]; arr.reduce(function(a,b,c){
alert(a+','+b+','+c);
// 12 69 1
// undifined 180 2
// undifined 8763 3
});
//从弹出的结果我们可以看出参数代表的是什么
arr.reduce(function(tmp,item,index){
alert(tmp+','+item+','+inedx);
// item指元素
// index 元素下标
// tmp?临时数(就是临时的中间结果:前两个数的和)见下图
});

代码示例一:算平均数

let arr=[1,2,3];

let result=arr.reduce(function(tmp,item,index){
if(index!=arr.length-1){// 不是最后一次
return tmp+item;
}else{ //最后一次
return (tmp+item)/arr.length;
}
}); alert(result); //
//注意这里的arr.length不能写成this.length 因为此时的this指向window

3 filter        过滤器

示例1:过滤出能被3整除的数

let arr=[3,4,5,6,7,8,9];

let res=arr.filter(item=>{
if(item%3==0){
return true; //通过false 和 true 决定是否输出
}else{
return false;
}
});
alert(res); // 3 6 9
// 简化版 因为item%3==0本身就是个布尔值
// let res=arr.filter(item=>item%3==0);

示例2:筛选出1万以上的商品

let arr=[
{title:'男鞋',price:300},
{title:'女鞋',price:2000},
{title:'男包',price:500},
{title:'女包',price:60000}
]; let res=arr.filter(json=>json.price>=10000);
console.log(res); //object {title:'女包',price:60000}

4 forEach        循环(迭代)

let arr=[1,2,3,45];

arr.forEach((index,item)=>{
alert(index+':'+item);
// 0:1
// 1:2
// 2:3
// 3:45
});

字符串

1. 多了两个新方法 (返回布尔值)

  startsWith     以什么开头

  endsWith        以什么结尾

let str='asdfgh';
alert(str.startsWith('a')); //true

示例1:判断网址的类型

let str='http://www.baidu.com';

if(str.startsWith('http://')){
console.log('普通地址');
}else if (str.startsWith('https://')){
console.log('安全地址');
}else if (str.startsWith('git://')){
console.log('git地址');
} else{
console.log('其他');
}

示例2:根据后缀判断类型

let str='1.txt';

if(str.endsWith('.txt')){
  console.log('文本文件');
}else if(str.endsWith('.jpg')){
  console.log('图片类型');
}else{
  console.log('其他');
}

2. 字符串模板

    字符串链接

  a 直接把东西塞到字符串里面    ${东西}

  b 可以折行

示例1:

//传统字符串是单双引号
let str='lmx';
let str="lmx"; //这里是反单引号
let str='lmx'; let res=`you are ${str}`; console.log(res);// you are lmx

示例2:字符串拼接对比

// 传统字符串连接 不能折行 (缺点:麻烦 )
let title='标题';
let content='内容'; let str='<div>\
<h1>+title+</h1>\
<p>+content+</p>\
</div>'; // ES6 反单引号拼接 可以折行 在拼接大段很有优势 let str2=`<div>
<h1>${title}</h1>
<p>${content}</p>
</div>`;

ES6学习总结二(数组的四个方法,字符串)的更多相关文章

  1. ES6学习笔记<二>arrow functions 箭头函数、template string、destructuring

    接着上一篇的说. arrow functions 箭头函数 => 更便捷的函数声明 document.getElementById("click_1").onclick = ...

  2. JS 中检测数组的四种方法

    今天和大家分享一下 JS 中检测是不是数组的四种方法,虽然篇幅不长,不过方法应该算是比较全面了. 1. instanceof 方法 instanceof 用于检测一个对象是不是某个类的实例,数组也是一 ...

  3. es6学习笔记一数组(上)

    最近公司没什么事情,我们老大让我看看es6,小颖就练习了下数组的各个方法,今天先给大家分享一部分.嘻嘻,希望对大家有所帮助. every方法: 概述:    every() 方法测试数组的所有元素是否 ...

  4. ES6学习笔记二

    字符串遍历 var str = 'hello'; for(let s of str){console.log(s += ' ')} //h e l l o 字符串查找:添加了include(str,i ...

  5. ES6学习笔记(数组)

    1.扩展运算符:, 2, 3]) // 1 2 3 console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5 用于函数调用 function add(x, y) { r ...

  6. ES6学习笔记(二)

    Set 和 Map 数据结构 1.set 基本用法 ES6提供了新的数据结构Set,它类似于数组,但是成员的值都是唯一的,没有重复的值 Set本身是一个构造函数,用来生成Set数据结构 const s ...

  7. ES6学习笔记之数组

    1.拓展运算符 含义 拓展运算符是三个点(...),功能是将数组或类数组对象展开成一系列用逗号隔开的值.如下面代码: console.log(...[1, 2, 3]); //1 2 3 consol ...

  8. es6学习笔记一数组(下)

    entries() 方法: 概述:    entries() 方法返回一个 Array Iterator(数组迭代) 对象,该对象包含数组中每一个索引的键值对. 示例: let arr = [&quo ...

  9. Java编程思想学习(十二) 数组和容器

    一.数组 1).数组的多种初始化方式 下面总结了初始化数组的多种方式,以及如何对指向数组的引用赋值,使其指向另一个数组对象.值得注意的是:对象数组和普通数组的各种操作基本上都是一样的:要说有什么不同的 ...

  10. ES6学习笔记之数组的扩展

    ✏️1. 扩展运算符 扩展运算符(spread)是三个点(...),将一个数组转为用逗号分隔的参数序列. 普通用法 console.log(...[1,2,3]);//1 2 3 数组拷贝(普通类型深 ...

随机推荐

  1. [求助][SPOJ MARIOGAM]-高斯消元(内含标程,数据等)

    小蒟蒻开始做概率的题之后,遇到了这道题,然而,他发现自己的程序调试了无数次也无法通过,系统总是返回令人伤心的WA, 于是,他决定把这一天半的时间收集到的资料放在网上, 寻求大家的帮助, 也可以节省后来 ...

  2. jQuery学习心得一

    1.闭包 每次看到jQuery的时候,首先想到的就是闭包.这是个老生常谈的问题了.今天重新回忆了一下闭包. 什么是闭包? 当有一个函数想要访问另一个函数内部的变量,这个是访问不了的.所有我们要用闭包来 ...

  3. Bootstrap表单验证

    主要用过两个: jqBootstrapValidation: https://github.com/ReactiveRaven/jqBootstrapValidation bootstrapValid ...

  4. Java Integer类型比较

    今天做了一道题目题目如下: Integer a=10; Integer b=10; System.out.print(a==b); Integer c=200; Integer d=200; Syst ...

  5. Duilib第一步(III)-知识进阶

    核心模块 CWindowWnd:窗口对象管理父类 创建窗口. 窗口消息过程处理. 提供窗口子类化.超类化接口. CDialogBuilder:空间布局类 解析XML界面布局文件,构建控件树 创建控件对 ...

  6. 软AP的实现------hostapd的编译运行

    最近要给摄像头做一个软ap,让手机能够连上这个热点,从而能够与摄像头进行通信. 1.什么是hostapd : hostapd能够使得无线网卡切换为master模式,模拟AP(通常可以认为是路由器)功能 ...

  7. CodeForces - 796C Bank Hacking

    思路:共有n-1条边连接n个点,即形成一棵树.一开始需要选择一个点hack--将这个点视为根结点,与它相邻的点防御值加1,与它相隔一个在线点的点的防御也加1.当根节点被hack,即这个点被删除,又变成 ...

  8. HashPayloadPcapReader

    package net.ripe.hadoop.pcap; import java.io.DataInputStream; import java.io.IOException; import com ...

  9. linux lnmp搭建及解释

    lnmp的搭建linux nginx mysql(mariaDB) php 安装mysql依赖:yum -y install cmake(cmake编译工具)yum -y install gcc gc ...

  10. caffe+GAN︱PPGN生成模型5则官方案例(caffe版)

    一.效果与架构 PPGN 整合了对抗训练.cnn特征匹配.降噪自编码.Langevin采样:在NIPS2016得到了Ian Goodfellow的介绍. PPGN生成的图像同类差异化大,可根据指定生成 ...