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 相关文章推荐
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
Oct 22 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
Dec 07 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
Sep 23 Javascript
window.open()详解及浏览器兼容性问题示例探讨
May 29 Javascript
js防止DIV布局滚动时闪动的解决方法
Oct 30 Javascript
JS实现鼠标框选效果完整实例
Jun 20 Javascript
JS实现的tab切换选项卡效果示例
Feb 28 Javascript
文本溢出插件jquery.dotdotdot.js使用方法详解
Jun 22 jQuery
jquery实现用户登陆界面(示例讲解)
Sep 06 jQuery
基于Node.js搭建hexo博客过程详解
Jun 25 Javascript
解决vue页面渲染但dom没渲染的操作
Jul 27 Javascript
vue内置组件component--通过is属性动态渲染组件操作
Jul 28 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
Snoopy类使用小例子
2008/04/15 PHP
PHP备份数据库生成SQL文件并下载的函数代码
2012/02/05 PHP
详解WordPress开发中的get_post与get_posts函数使用
2016/01/04 PHP
php 数组随机取值的简单实例
2016/05/23 PHP
php微信公众号开发之二级菜单
2018/10/20 PHP
jQuery提交多个表单的小例子
2013/06/30 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
IE6-IE9中tbody的innerHTML不能赋值的解决方法
2014/09/26 Javascript
深入浅析javascript立即执行函数
2015/10/23 Javascript
JS实现双击屏幕滚动效果代码
2015/10/28 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
轻松理解JavaScript闭包
2017/03/14 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
js禁止表单重复提交
2017/08/29 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
vue better-scroll插件使用详解
2018/01/25 Javascript
angularJS开发注意事项
2018/05/26 Javascript
js删除数组中某几项的方法总结
2019/01/16 Javascript
Vue组件实现触底判断
2019/06/26 Javascript
Node.js API详解之 V8模块用法实例分析
2020/06/05 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
2020/08/14 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
基于JavaScript实现简单扫雷游戏
2021/01/02 Javascript
python文件选择对话框的操作方法
2019/06/27 Python
Pytorch之保存读取模型实例
2019/12/30 Python
Pytorch 实现计算分类器准确率(总分类及子分类)
2020/01/18 Python
Python的PIL库中getpixel方法的使用
2020/04/09 Python
国际商务专业学生个人的自我评价
2013/09/28 职场文书
网络维护中文求职信
2014/01/03 职场文书
三月学雷锋活动总结
2014/06/26 职场文书
公司离职证明标准范本
2014/10/05 职场文书
模范教师事迹材料
2014/12/16 职场文书
通讯稿范文
2015/07/22 职场文书
关于职业道德的心得体会
2016/01/18 职场文书
入党转正申请自我鉴定
2019/06/25 职场文书
gateway与spring-boot-starter-web冲突问题的解决
2021/07/16 Java/Android