概念

Array.prototype.some方法测试数组中是不是至少有1个元素通过了被提供的函数测试。它返回的是一个Boolean类型的值。

语法

arr.some(callback(element[, index[, array]])[, thisArg])

参数

  • callback
    用来测试每个元素的函数,接受三个参数:

    • element
      数组中正在处理的元素。

    • index 可选
      数组中正在处理的元素的索引值。

    • array 可选
      被调用的数组。
      *thisArg 可选
      执行 callback 时使用的 this 值。

返回值

  • result
    数组中有至少一个元素通过回调函数的测试就会返回true;所有元素都没有通过回调函数的测试返回值才会为false。

描述

some() 为数组中的每一个元素执行一次 callback 函数,直到找到一个使得 callback 返回一个“真值”(即可转换为布尔值 true 的值)。如果找到了这样一个值,some() 将会立即返回 true。否则,some() 返回 false。

callback 只会在那些”有值“的索引上被调用,不会在那些被删除或从来未被赋值的索引上调用。

callback 被调用时传入三个参数:元素的值,元素的索引,被遍历的数组。

如果一个thisArg参数提供给some(),它将被用作调用的 callback的 this 值。否则, 它的 this value将是 undefined。this的值最终通过callback来观察,根据 the usual rules for determining the this seen by a function的this判定规则来确定。

some() 被调用时不会改变数组。

some() 遍历的元素的范围在第一次调用 callback. 前就已经确定了。在调用 some() 后被添加到数组中的值不会被 callback 访问到。

如果数组中存在且还未被访问到的元素被 callback 改变了,则其传递给 callback 的值是 some() 访问到它那一刻的值。已经被删除的元素不会被访问到。

例子

例一、检查数组是否有大于10的元素

1[1, 11, 9, 5, 8].some(function(item, index) {2    console.log(item, index);3    //  => 1, 04    //  => 11, 15    return item > 10;6});7//  => true89// 缩写10[1, 11, 9, 5, 8].some(item=>item>10);  // => true

例二、空数组调用some方法

1[].some(item=>item);2//  => false34[].some(item=>!item);5//  => false

例三、用some实现flat方法

1let arr = ['a', ['b', 'c', ['d', 'e', 'f', ['g']]]];2function flat(array){3    while (array.some(Array.isArray)) {4        array = [].concat(...array);5    }6    return array;7}8flat(arr);9//  => ['a', 'b', 'c', 'd', 'e', 'f', 'g']

面试题

一、请写出下面的运行结果?

1[].some(item=>!item);  // => ???2[null].some(item=>!item);  // => ???3['a', 'b', 'c'].some(item=> item.charCodeAt()> 100);  // => ???

Polyfill

1if (!Array.prototype.some) {2    Array.prototype.some = function(fun /*, thisArg*/ ) {3        'use strict';4        if (this == null) {5            throw new TypeError('Array.prototype.some called on null or undefined');6        }7        if (typeof fun !== 'function') {8            throw new TypeError();9        }10        var t = Object(this);11        var len = t.length >>> 0;12        var thisArg = arguments.length >= 2 ? arguments[1] : void 0;13        for (var i = 0; i < len; i++) {14            if (i in t && fun.call(thisArg, t[i], i, t)) {15                return true;16            }17        }18        return false;19    };20}

相关文章

  1. Array中slice介绍

  2. Array中join介绍

  3. 不是你记忆中的join,但致命的程度没两样

前端咖,值得关注,在看哦

scala array 删除元素_Array中some介绍相关推荐

  1. python list删除元素_python中List添加、删除元素的几种方法

    原博文 2015-06-21 18:51 − 一.python中List添加元素的几种方法 List 是 Python 中常用的数据类型,它一个有序集合,即其中的元素始终保持着初始时的定义的顺序(除非 ...

  2. python dict 删除元素_python中如何删除dict元素?

    我们知道如果我们在网络上发布不当.不正确的言论.网站会把我们的评论删除.正是因为是不正确的,它就没有存在的必要.之前小编向大家介绍了在python字典里添加元素的三种方法(https://www.py ...

  3. java数组删除元素_java中删除 数组中的指定元素方法

    java中删除 数组中的指定元素要如何来实现呢,如果各位对于这个算法不是很清楚可以和小编一起来看一篇关于java中删除 数组中的指定元素的例子. java的api中,并没有提供删除数组中元素的方法.虽 ...

  4. java for循环删除元素_JAVA中循环删除list中元素的方法总结

    JAVA中循环遍历list有三种方式for循环.增强for循环(也就是常说的foreach循环).iterator遍历. 1.for循环遍历list for(int i=0;i if(list.get ...

  5. java list 遍历 删除元素_java中List遍历删除元素相关做法和注意事项

    首先,使用简单的for循环时,list.remove()肯定是没问题的,只要注意一下下标别越界就行. 示例代码: List ll = new ArrayList(); ll.add("1&q ...

  6. java中list删除元素_java中,删除一个List中的后n个元素

    在java中,如果要删除List中的后n个元素,可以选择这个方法:循环n次,每次删除List的最后一个元素. 下面是一个例子(删除一个拥有6个元素的后三个元素): import java.util.L ...

  7. java set遍历删除元素_java中循环遍历删除List和Set集合中元素的方法

    今天在做项目时,需要删除List和Set中的某些元素,当时使用边遍历,边删除的方法,却报了以下异常: ConcurrentModificationException 为了以后不忘记,使用烂笔头把它记录 ...

  8. Java中List 删除元素方法參考

    Java中List 删除元素 Java中List 删除元素会使集合大小减少,合理删除的一些方法. 1:删除后的元素i-1 删除一个元素后,后边的元素左移1位,此时i-1,保证了下次循环能访问到左移了1 ...

  9. html点击按钮清空元素,jQuery怎么删除元素节点

    jquery删除元素节点的方法非常简单,我们可以直接通过remove()方法来进行删除节点操作. 下面我们就结合简单的代码示例,给大家详细介绍jquery删除节点元素的方法. 代码实例如下: jque ...

最新文章

  1. 来自 Google 的 R 语言编码风格指南
  2. 学习笔记Kafka(七)—— Kafka 与Spark集成 —— 原理介绍与开发环境配置、实战
  3. 6.虚拟机类加载机制
  4. 逆袭“潮牌”后,李宁离安踏还有多远?
  5. Eclipse jar包打不进apk
  6. jquery ui动态切换主题的一种实现方式
  7. duration java_Java Duration类| ofDays()方法与示例
  8. 漫步最优化三十三——牛顿法
  9. 蓝桥杯基础练习字母图形
  10. js实现数据流(日志流,报警信息等)滚动展示,并分页(含实现demo)
  11. mongodb 字符串转bson_大数据存储技术选型(六)--Mongodb专题介绍
  12. ios上的python编译器_在ios中运行一个简单的python脚本
  13. python EXCEL表格数据对比
  14. 用H5STEAM实现大华摄像头的WEB开发
  15. 使用Axure实现原型设计(一)
  16. 【论文笔记】Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme
  17. IBM服务器U盘安装CentOS6.8系统
  18. 如何恢复vscode的默认配置_史上最全vscode配置使用教程
  19. 欧氏距离与马氏距离的优缺点是什么?
  20. 神经外科病人资料管理系统

热门文章

  1. Linux--线程编程
  2. 利用ACS实现AAA认证
  3. Bourne Shell及shell编程
  4. QuickTime 0day ***代码发布,可能允许执行任意代码
  5. 如何用比特币现金地址和数字签名证明所有权
  6. java系统高并发解决方案
  7. 大尺寸3D打印机:不再是“围城”!工业级3D打印的瞬发时代已来!
  8. Spring应用注解配置实现IOC
  9. 解决 python用 xlsxwrite 向excel 中写入中文字符串变量 报错
  10. 使用phpMyAdmin时出现PHP 5.3+is required的解决方案