最近在看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方法遇到的问题相关推荐

  1. js中给数组添加元素的方法有哪些

    js中给数组添加元素的方法有哪些 unshift:将参数添加到原数组开头,并返回数组的长度 pop:删除原数组最后一项,并返回删除元素的值:如果数组为空则返回undefined push:将参数添加到 ...

  2. php array_push 二维数组,arraypush js二维数组push的方法

    用array_push给数组添加一个属性值 用array_push给数组添加一个属性值,如果是直接添加$a可以,但是如果要(1)如果你的数组是一维数组: 如: $arr = array('id'=&g ...

  3. js中的数组对象排序(方法sort()详细介绍)

    定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意 ...

  4. JS 常用字符串数组遍历函数方法整理

    目录 一.concat() 二.join() 三.push() 四.pop() 五.shift() 六.unshift() 七.slice() 九.substring() 和 substr() 十.s ...

  5. js中对数组的增删方法:push(),pop(),unshift(),shift(),splice()的用法小结

    1.push().pop()和unshift().shift() 这两组同为对数组的操作,并且会改变数组的本身的长度及内容. 不同的是 push().pop() 是从数组的尾部进行增减,unshift ...

  6. Vue前端js循环遍历数组八种方法总结最新

    前五种常用,第三种个人觉得常用最多,自己复制代码打印试试 var arr = [1, 2, 3, 4, 5, 6];// 第一种 for循环遍历var newArr = [];for(var i = ...

  7. es6 数组找最大值_JavaScript(es6)数组常用的方法

    常用方法 1.forEach() var data = [1,2,3,4,5]; var sum = 0;//求和 data.forEach((item)=>{sum+=item}) //给原数 ...

  8. JS模拟实现数组的map方法

    昨天使用map方法的时候,突然感觉一直在直接用,也没有试试是怎么实现的,本来想直接搜一篇文章盘一下子,结果没搜到合适的,好吧,那就自己来写一下子吧 今天就来实现一个简单的map方法 首先我们来看一下m ...

  9. js中操作数组的一些方法

    增 push   在数组的末尾添加一个或多个元素,并返回新的长度.  array.push(1,2,3.........) unshift  在数组的开头添加一个或多个元素,并返回新的长度. arra ...

最新文章

  1. 【神经网络】(7) 迁移学习(CNN-MobileNetV2),案例:乳腺癌二分类
  2. 收藏 | 机器学习数据集汇总收集
  3. JSON——Jackson 时间格式化输入输出
  4. dto是什么意思_DO,DTO,VO,POJO 你知道吗?
  5. SpringBoot2.0 整合 JWT 框架,解决Token跨域验证问题
  6. [ASP.NET 控件实作 Day28] 图形验证码控件
  7. IP Sec ***
  8. String Stringbuilder StringBuffer的区别和应用
  9. 关于字符串比较时候出现的空指针问题的坑
  10. java 异常 过滤器_java-Spring:如何使过滤器引发自定义异常?
  11. (08)VHDL实现2路选择器
  12. WebView的使用之Android与JS通过WebView互调方法
  13. 微服务升级_SpringCloud Alibaba工作笔记0007---spring gateway搭建
  14. 2021-2027全球与中国编码器附件市场现状及未来发展趋势
  15. 到底什么是端到端(edge-to-edge)啊?
  16. php微云上传,API - 微云
  17. PostScript语言教程(一、介绍)
  18. mysql 左联left join解析及使用指南
  19. 可替换STM23G031的32位单片机
  20. 华为防火墙双机热备(三层上下行交换机)

热门文章

  1. ckEditor使用方法
  2. 2017 未来科学大奖揭晓:施一公、潘建伟、许晨阳获奖
  3. android基础回顾(三)
  4. MySQL练习:达标数据库创建及连接python(京东项目)
  5. 华工大学计算机基础题库,华工大学计算机基础操作练习题
  6. springBoot启动事件监听机制
  7. python requests+unittest+beautifulreport+jenkins实现接口自动化(中)
  8. 数字音频编辑软件GoldWave破解版百度云下载
  9. 如何多人协作编辑文档
  10. vlc android局域网rtsp,VLC mosaic分屏显示多路RTSP媒体流问题。