js es6使用数组的every方法遇到的问题
最近在看js数据结构和算法的书,并且把书里面的案例敲了一遍,在集合这一章里面,在封装集合子集的时候是这样封装的,
isSubsetOf(otherSet) { if (this.size() > otherSet.size()) { // {1} return false; } let isSubset = true; // {2} this.values().every(value => { // {3} if (!otherSet.has(value)) { // {4} isSubset = false; // {5} return false; } return true; // {6} }); return isSubset; // {7}
}
在这里用到了数组的every方法,虽然平时用es6里面数组新增的方法比较多,但是every方法还是不常用的,随后我查看了一下mdn文档,文档里面有解释和案例:
every() 方法测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
const isBelowThreshold = (currentValue) => currentValue < 60;const array1 = [1, 30, 39, 29, 10, 13];console.log(array1.every(isBelowThreshold));
// expected output: true
看了之后我感觉封装子集的方法复杂了,不用再every函数里面做太多操作了,这样就行:
//子集
isSubsetOf(otherSet) {if(this.size() > otherSet.size()) {return false}let isSubSet = trueisSubSet = this.values().some(item => {otherSet.has(item)})return isSubSet
结果我在测试的时候,发现符合要求的时候居然也返回false
把mdn里面案例复制过来测试,
const array1 = [1, 30, 39, 29, 10, 13]
console.log(array1.every((item) => {item < 40;})
);
发现返回false,最终检查发现如果使用箭头函数,有要是使用大括号就必须加return,
const array1 = [1, 30, 39, 29, 10, 13];
const res1 = array1.every((item) => {//有大括号,要加returnreturn item < 40;
});
const res2 = array1.every((item //没有大括号,不需要加return) => item < 40
);
console.log(res1,res2); // true true
与之对应的还有一个some方法
js es6使用数组的every方法遇到的问题相关推荐
- js中给数组添加元素的方法有哪些
js中给数组添加元素的方法有哪些 unshift:将参数添加到原数组开头,并返回数组的长度 pop:删除原数组最后一项,并返回删除元素的值:如果数组为空则返回undefined push:将参数添加到 ...
- php array_push 二维数组,arraypush js二维数组push的方法
用array_push给数组添加一个属性值 用array_push给数组添加一个属性值,如果是直接添加$a可以,但是如果要(1)如果你的数组是一维数组: 如: $arr = array('id'=&g ...
- js中的数组对象排序(方法sort()详细介绍)
定义和用法 sort() 方法用于对数组的元素进行排序. 语法 arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意 ...
- JS 常用字符串数组遍历函数方法整理
目录 一.concat() 二.join() 三.push() 四.pop() 五.shift() 六.unshift() 七.slice() 九.substring() 和 substr() 十.s ...
- js中对数组的增删方法:push(),pop(),unshift(),shift(),splice()的用法小结
1.push().pop()和unshift().shift() 这两组同为对数组的操作,并且会改变数组的本身的长度及内容. 不同的是 push().pop() 是从数组的尾部进行增减,unshift ...
- Vue前端js循环遍历数组八种方法总结最新
前五种常用,第三种个人觉得常用最多,自己复制代码打印试试 var arr = [1, 2, 3, 4, 5, 6];// 第一种 for循环遍历var newArr = [];for(var i = ...
- es6 数组找最大值_JavaScript(es6)数组常用的方法
常用方法 1.forEach() var data = [1,2,3,4,5]; var sum = 0;//求和 data.forEach((item)=>{sum+=item}) //给原数 ...
- JS模拟实现数组的map方法
昨天使用map方法的时候,突然感觉一直在直接用,也没有试试是怎么实现的,本来想直接搜一篇文章盘一下子,结果没搜到合适的,好吧,那就自己来写一下子吧 今天就来实现一个简单的map方法 首先我们来看一下m ...
- js中操作数组的一些方法
增 push 在数组的末尾添加一个或多个元素,并返回新的长度. array.push(1,2,3.........) unshift 在数组的开头添加一个或多个元素,并返回新的长度. arra ...
最新文章
- 【神经网络】(7) 迁移学习(CNN-MobileNetV2),案例:乳腺癌二分类
- 收藏 | 机器学习数据集汇总收集
- JSON——Jackson 时间格式化输入输出
- dto是什么意思_DO,DTO,VO,POJO 你知道吗?
- SpringBoot2.0 整合 JWT 框架,解决Token跨域验证问题
- [ASP.NET 控件实作 Day28] 图形验证码控件
- IP Sec ***
- String Stringbuilder StringBuffer的区别和应用
- 关于字符串比较时候出现的空指针问题的坑
- java 异常 过滤器_java-Spring:如何使过滤器引发自定义异常?
- (08)VHDL实现2路选择器
- WebView的使用之Android与JS通过WebView互调方法
- 微服务升级_SpringCloud Alibaba工作笔记0007---spring gateway搭建
- 2021-2027全球与中国编码器附件市场现状及未来发展趋势
- 到底什么是端到端(edge-to-edge)啊?
- php微云上传,API - 微云
- PostScript语言教程(一、介绍)
- mysql 左联left join解析及使用指南
- 可替换STM23G031的32位单片机
- 华为防火墙双机热备(三层上下行交换机)
热门文章
- ckEditor使用方法
- 2017 未来科学大奖揭晓:施一公、潘建伟、许晨阳获奖
- android基础回顾(三)
- MySQL练习:达标数据库创建及连接python(京东项目)
- 华工大学计算机基础题库,华工大学计算机基础操作练习题
- springBoot启动事件监听机制
- python requests+unittest+beautifulreport+jenkins实现接口自动化(中)
- 数字音频编辑软件GoldWave破解版百度云下载
- 如何多人协作编辑文档
- vlc android局域网rtsp,VLC mosaic分屏显示多路RTSP媒体流问题。