Array.find((item,indexArr,arr)=>{}) 掌握

找出第一个符合条件的数组成员。
它的参数是一个回调函数,对所有数组成员依次执行该回调函数。
直到找出第一个返回值为true的成员,然后返回该成员。
如果没有符合条件的成员,则返回undefined。 -- 找出第一个大于15的数字
let arr = [10, 20, 30]
let firstItem = arr.find((item, index, Arr) => {
return item > 15
})
console.log('firstItem==>', firstItem); //输出20 -- 找出第一个大于19的数字的这一项的值
let arr = [{
age: 10
}, {
age: 20
}, {
age: 30
}]
let firstItem = arr.find((item, index, Arr) => {
return item.age > 19
})
console.log('firstItem==>', firstItem); //输出{age: 20}

Array.findIndex((item, index, Arr) => {}) 掌握

数组实例的 findIndex 方法的用法与find方法非常类似,
返回第一个符合条件的数组成员的位置,如果所有成员都不符合条件,则返回-1。
let arr = [{
age: 10
}, {
age: 20
}, {
age: 30
}]
let a = arr.findIndex((item, index, Arr) => {
return item.age > 15
})
let b = arr.findIndex((item, index, Arr) => {
return item.age > 45
})
console.log('a==>', a); //输出1
console.log('b==>', b); //输出-1 //查找数组的某一项是否有某个值
//返回第一个符合条件的数组成员的位置
const arr = [{
id: 001
}, {
id: 002
}, {
id: 003
}];
let index = arr.findIndex(item => {
return item.id == '004'
})
console.log(index);

Array.flat()用于拉平嵌套的数组[推荐-超级好用]

数组的成员有时还是数组,Array.flat()用于将嵌套的数组“拉平”,变成一维的数组。
该方法返回一个新数组,对原数据没有影响。
[1, 2, [3, 4]].flat() 读音【fu la t】 flat()默认只会“拉平”一层,如果想要“拉平”多层的嵌套数组。
可以将flat()方法的参数写成一个整数,表示想要拉平的层数,默认为1。 [1, 2, [3, [4, 5]]].flat()
上面代码中,表示想要拉平的层数,默认为1
// [1, 2, 3, [4, 5]] [1, 2, [3, [4, 5]]].flat(2)
上面代码中,flat()的参数为2,表示要“拉平”两层的嵌套数组。
// [1, 2, 3, 4, 5] 如果不管有多少层嵌套,都要转成一维数组,可以用Infinity关键字作为参数。
[1, [2, [3]]].flat(Infinity)
// [1, 2, 3] 如果原数组有空位,flat()方法会跳过空位。
[1, 2, , 4, 5].flat()
// [1, 2, 4, 5]

Array.at()返回对应下标的值[超级好用]

我们都知道JavaScript不支持数组索引值为负索引。
那么想要表示数组的最后一个成员,不能写成arr[-1],只能使用arr[arr.length - 1]。 为了解决负索引这个问题,es6中为数组实例增加了at()方法,接受一个整数作为参数。
返回对应位置的成员,支持负索引。
这个方法不仅可用于数组, 也可用于字符串和类型数组( TypedArray)。
如果参数位置超出了数组范围,at()返回undefined。 const arr = [100, 120, 18, 130, 4];
console.log(arr.at(1)) //120
console.log(arr.at(-1)) //4
console.log(arr.at(-5)) //100
console.log(arr.at(-6)) //undefined

Array.from() [掌握]

一个类似数组的对象,Array.from将它转为真正的数组。
需要注意的是:这个类似数组的对象必须要有length属性才可以,转为数组。
否者将会转为为一个空数组
let arrayLike = {
'0': 'a',
'1': 'b',
'2': 'c',
length: 3
}; // ES5的写法
var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c'] // ES6的写法
let arr2 = Array.from(arrayLike); // ['a', 'b', 'c'] 当没有类似数组的对象没有length属性
let arrayLike = {
'0': 'a',
'1': 'b',
'2': 'c',
};
//此时返回的是一个空数组
let arr2 = Array.from(arrayLike); // []

Array.of() 了解

Array.of()方法用于将【一组数值】转换为数组.
简单的使用:
const a = Array.of(10, 20, 26, 38);
console.log(a); // [10, 20, 26, 38] const b = Array.of(1).length;
console.log(b); // 1 Array.of()可以用以下的代码模拟实现:
function ArrayOf() {
return [].slice.call(arguments);
}

Array.includes的使用

Array.prototype.includes方法返回一个布尔值,表示某个数组是否包含给定的值。
与字符串的includes方法类似。ES2016 引入了该方法。 简单的使用方法
const arr = [100, 200, 300];
console.log(arr.includes('100')) //false
console.log(arr.includes(100)) //true
没有该方法之前,我们使用数组的indexOf方法,检查是否包含某个值。
if (arr.indexOf(el) !== -1) {
// 有这个值
}
indexOf方法有两个缺点,一是不够语义化,它的含义是找到参数值的第一个出现位置,
所以要去比较是否不等于-1,表达起来不够直观。
二是,它内部使用严格相等运算符(===)进行判断,这会导致对NaN的误判。
[NaN].indexOf(NaN) // -1 includes使用的是不一样的判断算法,所以没有这个问题。
[NaN].includes(NaN)
// true

扩展运算符 (...)

扩展运算符是三个点(...),
将一个数组转为用逗号分隔的参数序列。
console.log(...[1, 2, 3])
// 1 2 3 console.log(1, ...[2, 3, 4], 5)
// 1 2 3 4 5 [...document.querySelectorAll('div')]
// [<div>, <div>, <div>]
let arr1=[11,22,];
let arr2=["aa","bb"];
// es5的合并
let arr=arr1.concat(arr2);
console.log(arr) // [11, 22, "aa", "bb"] //es6
let newarr=[...arr1,...arr2]
console.log(newarr) // [11, 22, 33, 55, "aa", "bb", "cc", "dd"]
// 函数内部有一个对象,arguments可以获取到实参,但是一个伪数组
//Array[饿 rei]
function sun(){
console.log(arguments)
//Arguments(8) [1, 2, 3, 4, 5, 6, 7, 9, callee: ƒ, Symbol(Symbol.iterator): ƒ] 他是一个伪数组
}
sun(1,2,3,4,5,6,7,9); // 如何将函数内部的伪数组变为真实的数组 方法1
function sun(){
let ags=Array.prototype.slice.call(arguments);
ags.push(150);
console.log(ags); //[1, 2, 3, 4, 5, 6, 7, 9, 150]
}
sun(1,2,3,4,5,6,7,9); // 如何将函数内部的伪数组变为真实的数组 方法2
function sun(){
let ags=[...arguments];//将伪数组百年未真实的数组
ags.push(150);
console.log(ags); //[1, 2, 3, 4, 5, 6, 7, 9, 150]
}
sun(1,2,3,4,5,6,7,9); // 总结扩展运算符是... [...变为真实数组的对象]

数组的空位

数组的空位指的是,数组的某一个位置没有任何值.
比如Array()构造函数返回的数组都是空位。
let arr = new Array(3)
console.log(arr); // [, , ,] 谷歌浏览器中会有出现  [空属性 × 3]
上面代码中,Array(3)返回一个具有 3 个空位的数组。
ES5 对空位的处理,已经很不一致了,大多数情况下会忽略空位。
forEach(), filter(), reduce(), every() 和some()都会跳过空位。
map()会跳过空位,但会保留这个值
join()和toString()会将空位视为undefined,而undefined和null会被处理成空字符串。 ps:ES6 则是明确将空位转为undefined。
let arr = new Array(3)
console.log(arr[0] === undefined); //true
ps:ES6 则是明确将空位转为undefined。
Array.from()方法会将数组的空位,转为undefined,也就是说,这个方法不会忽略空位。
Array.from(['a',,'b'])
// [ "a", undefined, "b" ] 扩展运算符(...)也会将空位转为undefined。
[...['a',,'b']]
// [ "a", undefined, "b" ] new Array(3).fill('a') // ["a","a","a"] for...of循环也会遍历空位。
let arr = [, ,];
for (let i of arr) {
console.log(1);
}
// 1
// 1
上面代码中,数组arr有两个空位,for...of并没有忽略它们。
如果改成map()方法遍历,空位是会跳过的

ES6中数组新增的方法-超级好用的更多相关文章

  1. ES6中数组的新方法

    数组的扩展 1.1扩展运算符 1.1.1:... 扩展运算符(spread)是三个点(...).它好比 rest 参数的逆运算,将一个数组转为用逗号分隔的参数序列. <body> < ...

  2. ES5中数组新增的方法说明

    一.前言-索引 ES5中新增的不少东西,了解之对我们写JavaScript会有不少帮助,比如数组这块,我们可能就不需要去有板有眼地for循环了. ES5中新增了写数组方法,如forEach (js v ...

  3. ES6中对象新增的方法

    属性的简洁表示法 ES6 允许在大括号里面直接写入变量和函数,作为对象的属性和方法.这样的书写更加简洁. const foo = 'bar'; const baz = { foo }; console ...

  4. ES6中数组和对象的扩展运算符拷贝问题以及常用的深浅拷贝方法

    在ES6中新增了扩展运算符可以对数组和对象进行操作.有时候会遇到数组和对象的拷贝,可能会用到扩展运算符.那么这个扩展运算符到底是深拷贝还是浅拷贝呢? 一..使用扩展运算符拷贝 首先是下面的代码. le ...

  5. ES6中函数新增的方式方法

    ---恢复内容开始---   绪 言 ES6 大家对JavaScript中的函数都不陌生.今天我就为大家带来ES6中关于函数的一些扩展方式和方法. 1.1函数形参的默认值 1.1.1基本用法 ES6 ...

  6. ES6中的Promise使用方法与总结

    在javascript中,代码是单线程执行的,对于一些比较耗时的IO操作,都是通过异步回调函数来实现的. 但是这样会存在一个问题,当下一个的操作需要上一个操作的结果时,我们只能把代码嵌到上一个操作的回 ...

  7. JavaScript中数组的迭代方法:forEach、map、filter、reduce、every、some、for in、for of

    JavaScript中有非常多数组迭代方法,这里基本上吧所有的都介绍全了,我项目中比较喜欢的是forEach. 7.for in (for-in循环实际是为循环对象而设计的,for in也可以循环数组 ...

  8. JS中数组和字符串方法的简单整理

    一.数组: 数组的基本方法:              1.增:arr.unshift() /push()    前增/后增                  2.删:arr.shift() /pop ...

  9. JS 开发中数组常用的方法

    大家有没有想过,js数组为什么会有这么多的方法,没错,就是为了不同场景下处理数据的需要,就像设计模式一样,都是为了能更好的处理当前场景的需要. 首先怎么创建一个数组呢, // 两种方式 // 1,构造 ...

随机推荐

  1. 重启iptables造成nf_conntrack_max变成65535解决办法

    现象: 查看 sysctl -a |grep nf_conntrack_maxnet.netfilter.nf_conntrack_max = 554288net.nf_conntrack_max = ...

  2. python3批量统计用户电脑配置

    最近领导想统计一下用户电脑配置信息.好几百人难道让我一个一个的去弄吗? 想想还是写个程序接收一下吧. 客户端 # -*- coding: utf-8 -*- #author:Guoyabin impo ...

  3. [题解]hihoCoder挑战赛18——题目1 神奇字符串

    题目地址:http://hihocoder.com/problemset/problem/1264 时间限制:20000ms 单点时限:1000ms 内存限制:256MB 描述 我们说两个字符串是非常 ...

  4. 医院大数据平台建设_构建医院智能BI平台的关键技术

    在新技术层出不穷的当下,世界各地的组织正在以闪电般的速度变化和进化,以便在新技术可用时加以利用.其中目前最具活力的一个领域是商业智能(BI).想一想,你可能已经习惯以每周或每月IT或数据科学家交付给你 ...

  5. KTL 一个支持C++14编辑公式的K线技术工具平台 - 第四版,稳定支持Qt5编程,zqt5语法升级,MA函数提升性能1000%,更多公式算法的内置优化实现。

    K,K线,Candle蜡烛图. T,技术分析,工具平台 L,公式Language语言使用c++14,Lite小巧简易. 项目仓库:https://github.com/bbqz007/KTL 国内仓库 ...

  6. Oracle之SQL限定查询

    WHERE限定条件 /*语法结构:SELECT * | 列名1[,列名2...] | 表达式FROM 表名 WHERE 限定条件; */ --查询职位为CLERK的员工信息 SELECT * FROM ...

  7. Oracle之PL/SQL Developer的下载与安装

    PL/SQL是什么? PL/SQL Developer是一个集成开发环境(以下简称PL/SQL),专门开发面向Oracle数据库的应用.PL/SQL也是一种程序语言,叫做过程化SQL语言(Proced ...

  8. 教程6--配置ssh

    配置ssh 如果需要使用到远程仓库,那么就需要两个步骤: (1)配置创建SSH key(用于识别用户,免得每次输入账号密码) 在命令窗口输入ssh-keygen -t rsa -c "你的邮 ...

  9. jq获取不包含某些属性的元素

    最近写项目,有个功能实现checkbox全选,但是被禁用的checkbox不能选中 点击全选后发现禁用checkbox的也被选中了,不符合需求. 但是想了半天,属性选择器都是判断某个属性值的,没有判断 ...

  10. Linux CentOS7.X-文件操作命令

    一.文件新增,touch 1.touch fileName,其中fileName表示文件名称,代表创建一个空文件: 2.touch fn1 fn2 fn3....fnn,其中fn1至fnn表示n个不同 ...