ES6 Array常用扩展的应用实例分析


Posted in Javascript onJune 26, 2019

本文实例讲述了ES6 Array常用扩展的应用。分享给大家供大家参考,具体如下:

在ES6中又对Array扩展了不少方法,下面我们来看下

from方法

将伪数组转换为数组

let obj = {
 '0':'h',
 '1':'i',
 'length':2
};
let arr = Array.from(obj);
console.log(Array.isArray(arr)); // true
console.log(arr); // ["h", "i"]

通过第二个回调参数对值进行再加工处理

let obj = {
 '0':'h',
 '1':'i',
 'length':2
};
let arr = Array.from(obj,function(item, index) {
 // 对返回的值进行处理
 return item + '...'
});
console.log(arr); // ["h...", "i..."]

可转换实现了interator接口的类型如:set和map 为数组

var set = new Set(['me','book','Joh']);
var arr = Array.from(set);
console.log(arr); // ["me", "book", "Joh"]

其他:使dom节点NodeList转化为数组

of方法

var arr = new Array(5); // 数组之前的这种形式和字符串等类型的操作不统一,得到的只是长度为5的空数组
console.log(arr); // [empty × 5]
var arr2 = Array.of(12);
console.log(arr2);// [12]
var arr3 = Array.of(12,3,5,22);
console.log(arr3); // [12, 3, 5, 22]

使用of方法,直接获得数组

find方法

find 查找符合函数的标准,返回一个真值,第一个就符合 :

var arr = [undefined, 22,33,44];
var val = arr.find(function () {
 return true;
});
console.log(val); // undefined 始终返回第一个值,无论是0,'', NaN, undefined, null 都返回第一个值

返回false, 将没有一个符合,最终结果是undefined

var arr = [20, 22,33,44];
var val = arr.find(function () {
 return false;
});
console.log(val); // undefined

通过find参数中的value来判断

var arr = [21, 22, 33, 44];
var val = arr.find(function (value, index, arr) {
 return value > 22;
});
console.log(val); // 33

findIndex方法

和find方法几乎一样,就是返回值是索引

var arr = [21, 22, 33, 44];
var val = arr.findIndex(function (value, index, arr) {
 return value > 22;
});
console.log(val); // 2

findIndex可以解决indexOf无法解决的问题:

var arr = [NaN];
var res1 = arr.indexOf(NaN);
var res2 = arr.findIndex(function (v) {
 return Object.is(NaN, v);
});
console.log(res1); // -1 未找到
console.log(res2); // 0 找到

copyWithin方法

copyWithin 操作原数组 (起始索引,拷贝值的索引起点,拷贝值的索引终点), 将拷贝的值替换原值 ,注意左闭右开

// 替换多个值
var arr1 = [1,2,3,4,5,6,7];
arr1.copyWithin(1,5,7);
console.log(arr1); // [1, 6, 7, 4, 5, 6, 7]
// 替换一个值的不同表示1
var arr2 = [1,2,3,4,5,6,7];
arr2.copyWithin(2,5,6); // 将6替换3
console.log(arr2); // [1, 2, 6, 4, 5, 6, 7]
// 替换一个值的不同表示2 从后面数,最后一个是-1,倒数第二个是-2
var arr3 = [1,2,3,4,5,6,7];
arr3.copyWithin(2,-2,-1);
console.log(arr3); // [1,2,6,4,5,6,7]
// 替换一个值的不同表示3 前后混合使用
var arr3 = [1,2,3,4,5,6,7];
arr3.copyWithin(2,5,-1);
console.log(arr3); // [1,2,6,4,5,6,7]

fill方法

fill(默认填充值,填充起始索引,填充结束索引) , 注意区间的左闭右开

var arr1 = [1,2,3,4,5,6,7];
arr1.fill(10);
console.log(arr1); // [10, 10, 10, 10, 10, 10, 10]
var arr2 = [1,2,3,4,5,6,7];
arr2.fill(10,2,5);
console.log(arr2); // [1, 2, 10, 10, 10, 6, 7]

includes方法

includes 用于查找是否包含某种元素

const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN];
console.log('%s', arr1.includes('c')) // true
console.log('%s', arr1.includes('z')) // false
console.log('%s', arr1.includes(NaN)) // true

函数的第二个参数表示判断的起始位置 :

const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN];
console.log('%s', arr1.includes('d', 1)) // true
console.log('%s', arr1.includes('d', 3)) // true
console.log('%s', arr1.includes('d', 4)) // false

第二个参数也可以是负数,表示从右数过来第几个,但是不改变判断搜索的方向,搜索方向还是从左到右

const arr1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', NaN]
console.log('%s', arr1.includes('k', -1)); // false
console.log('%s', arr1.includes('k', -2)); // true
console.log('%s', arr1.includes('i', -3)); // false

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
js各种验证文本框输入格式(正则表达式)
Oct 22 Javascript
JavaScript 一道字符串分解的题目
Aug 03 Javascript
JS在textarea光标处插入文本的小例子
Mar 22 Javascript
iframe子页面与父页面在同域或不同域下的js通信
May 07 Javascript
Javascript代码实现仿实例化类
Apr 03 Javascript
JavaScrip调试技巧之断点调试
Oct 22 Javascript
JavaScript入门系列之知识点总结
Mar 24 Javascript
微信公众号支付H5调用支付解析
Nov 04 Javascript
Bootstrap里的文件分别代表什么意思及其引用方法
May 01 Javascript
Angular2 http jsonp的实例详解
Aug 31 Javascript
Angular 封装并发布组件的方法示例
Apr 19 Javascript
node.js中fs文件系统模块的使用方法实例详解
Feb 13 Javascript
Vue.js实现备忘录功能
Jun 26 #Javascript
微信小程序数据统计和错误统计的实现方法
Jun 26 #Javascript
Vue移动端右滑屏幕返回上一页附源码下载
Jun 26 #Javascript
微信小程序利用Canvas绘制图片和竖排文字详解
Jun 25 #Javascript
js+html实现周岁年龄计算器
Jun 25 #Javascript
Vue 列表上下过渡效果的实例代码
Jun 25 #Javascript
JS 封装父页面子页面交互接口的实例代码
Jun 25 #Javascript
You might like
PHP中调用JAVA
2006/10/09 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
Laravel 4 初级教程之安装及入门
2014/10/30 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
张孝祥JavaScript学习阶段性总结(2)--(X)HTML学习
2007/02/03 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
图片上传插件jquery.uploadify详解
2013/11/15 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
JavaScript中的style.cssText使用教程
2014/11/06 Javascript
JavaScript 函数的执行过程
2016/05/09 Javascript
页面get请求 中文参数方法乱码问题的快速解决方法
2016/05/31 Javascript
Node.js简单入门前传
2017/08/21 Javascript
图文介绍Vue父组件向子组件传值
2018/02/17 Javascript
JS/HTML5游戏常用算法之路径搜索算法 随机迷宫算法详解【普里姆算法】
2018/12/13 Javascript
Vue安装浏览器开发工具的步骤详解
2019/05/12 Javascript
基于vue如何发布一个npm包的方法步骤
2019/05/15 Javascript
javascript使用链接跨域下载图片
2019/11/01 Javascript
node省市区三级数据性能测评实例分析
2019/11/06 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
Python对列表中的各项进行关联详解
2017/08/15 Python
使用pyhon绘图比较两个手机屏幕大小(实例代码)
2020/01/03 Python
keras用auc做metrics以及早停实例
2020/07/02 Python
python db类用法说明
2020/07/07 Python
Farfetch澳大利亚官网:Farfetch Australia
2020/04/26 全球购物
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
办公室副主任岗位职责
2013/11/25 职场文书
毕业生个人求职信范文分享
2014/01/05 职场文书
七年级地理教学反思
2014/01/26 职场文书
中学生个人自我评价
2014/02/06 职场文书
教师个人鉴定材料
2014/02/08 职场文书
超市客服工作职责
2014/06/11 职场文书
学习礼仪心得体会
2014/09/01 职场文书
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
工商局副局长个人对照检查材料
2014/09/25 职场文书
个人党性分析总结
2015/03/05 职场文书
雷锋的观后感
2015/06/10 职场文书