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 相关文章推荐
Extjs TimeField 显示正常时间格式的代码
Jun 28 Javascript
原生js实现跨浏览器获取鼠标按键的值
Apr 08 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
Dec 20 Javascript
js中自定义方法实现停留几秒sleep
Jul 11 Javascript
JS实现页面超时后自动跳转到登陆页面
Jan 19 Javascript
JavaScript实现找质数代码分享
Mar 24 Javascript
javascript实现类似java中getClass()得到对象类名的方法
Jul 27 Javascript
关于Vue Webpack2单元测试示例详解
Aug 14 Javascript
浅谈Vue.js中ref ($refs)用法举例总结
Dec 19 Javascript
element ui 表格动态列显示空白bug 修复方法
Sep 04 Javascript
element-ui 文件上传修改文件名的方法示例
Nov 05 Javascript
如何使JavaScript休眠或等待
Apr 27 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
怎么使 Mysql 数据同步
2006/10/09 PHP
apache2.2.4+mysql5.0.77+php5.2.8安装精简
2009/04/29 PHP
php实现批量压缩图片文件大小的脚本
2014/07/04 PHP
PHP基于SPL实现的迭代器模式示例
2018/04/22 PHP
PHP基于GD2函数库实现验证码功能示例
2019/01/27 PHP
PHP实现二维数组按照指定的字段进行排序算法示例
2019/04/23 PHP
JavaScript自执行闭包的小例子
2013/06/29 Javascript
JS复制到剪贴板示例代码
2013/10/30 Javascript
JS求平均值的小例子
2013/11/29 Javascript
js创建一个input数组并绑定click事件的方法
2014/06/12 Javascript
网页运行时提示对象不支持abigimage属性或方法
2014/08/10 Javascript
js与css实现弹出层覆盖整个页面的方法
2014/12/13 Javascript
浅析vue数据绑定
2017/01/17 Javascript
jQuery插件echarts实现的多柱子柱状图效果示例【附demo源码下载】
2017/03/04 Javascript
AngularJS实现动态添加Option的方法
2017/05/17 Javascript
详解webpack 多页面/入口支持&公共组件单独打包
2017/06/29 Javascript
laydate日历控件使用方法详解
2017/11/20 Javascript
Echarts实现多条折线可拖拽效果
2019/12/19 Javascript
vue实现购物车的监听
2020/04/20 Javascript
Python用GET方法上传文件
2015/03/10 Python
tensorflow 获取变量&打印权值的实例讲解
2018/06/14 Python
Python实现的调用C语言函数功能简单实例
2019/03/13 Python
Python 函数用法简单示例【定义、参数、返回值、函数嵌套】
2019/09/20 Python
Django 实现将图片转为Base64,然后使用json传输
2020/03/27 Python
Django-xadmin+rule对象级权限的实现方式
2020/03/30 Python
python编写实现抽奖器
2020/09/10 Python
详解Python yaml模块
2020/09/23 Python
俄罗斯韩国化妆品网上商店:Cosmasi.ru
2019/10/31 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
机械个人求职信范文
2014/01/24 职场文书
周年庆典邀请函范文
2014/01/24 职场文书
大学生村官考核材料
2014/05/23 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
入党积极分子考察意见
2015/06/02 职场文书
2019年怎样才能撰写出优秀的自荐信
2019/03/25 职场文书
MySQL 角色(role)功能介绍
2021/04/24 MySQL