js数组中容易误用的一些方法
1.every和some
两个方法的参数都是一个函数,函数的有3个参数,依次是当前值value,索引index,数组array
every判断数据中的每一项是否满足某个条件,如果满足就返回true,有一项不符合就返回false
var arr = [1,2,3]
var b = arr.every(function(value,index,arr){
if(value>2){
return true
}
})
console.log(b) // false
some判断数组中的某一项是否满足某个条件,如果满足就返回true,都不满足就返回false
var arr = [1,2,3]
var b = arr.some(function(value,index,arr){
if(value>2){
return true
}
})
console.log(b) // true
every和some返回的结果都是boolean值,而不是数组。
2. reduce
调用方式array.reduce(callback[, initialValue]); 对数组中的每一个元素(从左到右)执行callback函数累加,callback的参数有4个prev(数组第一个值或者出入的初始值initialValue) value(当前值),index(当前值索引),arr(数组)
如果有初始值,reduce会从数组第一元素开始执行,callback会执行array.length次。如果没有初始值,reduce会从数组第二个元素开始执行,callback会执行array.length-1次。
有初始值
var arr = [1,2,3]
var sum = arr.reduce(function(prev,cur,index,arr){
console.log('index:',index,prev,cur)
return prev+cur
},0)
// 打印结果
// index: 0 0 1
// index: 1 1 2
// index: 2 3 3
无初始值
var arr = [1,2,3]
var sum = arr.reduce(function(prev,cur,index,arr){
console.log('index:',index,prev,cur)
return prev+cur
})
// 打印结果
// index: 1 1 2
// index: 2 3 3
3.indexOf 和 includes的区别
返回值不同:indexOf返回的是数值类型,而includes返回的是boolean值
对NaN的处理方式不同,
对稀疏数组的处理结果不同。
var a = [NaN]
console.log(a.indexOf(NaN)) // -1
console.log(a.includes(NaN)) // true var b = [1,,3]
console.log(b.indexOf(undefined)) // -1
console.log(b.includes(undefined)) // true
4.find
调用方式 arr.find(callback[, thisArg])。find 方法对数组中的每一项元素执行一次 callback 函数,直至有一个 callback 返回 true。当找到了这样一个元素后,该方法会立即返回这个元素的值 。callback 函数带有3个参数:当前元素的值、当前元素的索引,以及数组本身
var a = [1,2,3]
var b = a.find(function(value,index,arr){
return value > 1
})
console.log(b) // 2
find返回的是元素的值,而不是元素在数组中的索引,要返回数组的索引,使用findIndex
5.copyWithIn
调用方式arr.copyWithin(target[, start[, end]])
target,复制的序列要插入到数组中的位置
start,开始复制元素的起始位置
end,开始复制元素的结束位置,如果被忽略,默认copyWithin将会复制到arr.ength
var arr = [1,2,3,4,5]
arr.copyWithin(0,3)
console.log(arr) // [4, 5, 3, 4, 5]
这个方法会修改原来的数组
js数组中容易误用的一些方法的更多相关文章
- js数组中对象去重 (reduce() 方法)
一个数组中含有对象,并且去掉数组中重复的对象.主要代码如下: var arrData = [ {id: , name: "小明"}, {id: , name: "小张&q ...
- JS数组去重的几种常见方法
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ ...
- js oop中的三种继承方法
JS OOP 中的三种继承方法: 很多读者关于js opp的继承比较模糊,本文总结了oop中的三种继承方法,以助于读者进行区分. <继承使用一个子类继承另一个父类,子类可以自动拥有父类的属性和方 ...
- js 数组容易弄混的那些方法
js数组中 我们很多数组的方法都知道其中的含义 但是每一次用的都不是很顺手 下边我给大家写了一个小小的demo 来理解那些 近似”双胞胎“的东西 // splice方法 var a=[1,2,3,4, ...
- 统计js数组中奇数元素的个数
如何统计一个JS数组中奇数元素的个数呢? 这是群友提出的一个问题,大部分群友给出的是遍历 然后对2取模,得到最终结果. 这样的写法是最容易想得到的,那么有没有其他思路呢? 这里我提供另外一种思路,我们 ...
- php 返回数组中指定多列的方法
php array_column 方法可以返回数组中指定的一列,但不能返回多列,本文将介绍array_column方法的使用,并用代码演示返回数组中指定多列的方法. 1.array_column说明 ...
- js数组中的find(), findIndex(), filter(), forEach(), some(), every(), map(), reduce()方法的详解和应用实例
1. find()与findIndex() find()方法,用于找出第一个符合条件的数组成员.它的参数是一个回调函数,所有数组成员依次执行该回调函数,直到找出第一个返回值为true的成员,然后返回该 ...
- js中删除数组中某一项的方法
1:js中的splice方法 splice(index,len,[item]) 注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...
- js数组中的reverse()方法
reverse方法是将数组中的元素的顺序进行反转,在原数组上操作,然后返回原数组.由于本人是学习js的新人,对reverse函数进行了几个小实验,以下实验均在Chrome浏览器上运行 实验一:reve ...
随机推荐
- UDP广播 MAC地址
enduser_setup.start() ListenPort = wifi.setmode(wifi.STATIONAP) wifi.sta.autoconnect() clientid = wi ...
- 【Android端】【日志收集上报SDK相关内容测试的方案梳理总结】
测试方案: 主要从几个方面关注,功能 性能 服务端策略(目前所有的这些上报收集等都会通过开关的精细化,通过接口方式将信息返回给APP端,APP端根据相关内容进行上报,因此基于此的上报机制及收集机制都需 ...
- 【收藏】ETH以太坊各个环境的公共的RPC服务!!!
Choose a Network Use one of these endpoints as your Ethereum client provider or IPFS endpoint. NOTE: ...
- c# maiform父窗体改变动态的gridew 奇偶行变色的快捷方法
无需在每个usercontrol里边单个指定控件内gridview 隔行换色.只需要在主窗体内改成统一就好了 做到这点要明白.gridcontrol 是usercontrol 的子控件 , grid ...
- linux wc使用详解
转载:https://www.cnblogs.com/peida/archive/2012/12/18/2822758.html Linux系统中的wc(Word Count)命令的功能为统计指定文件 ...
- mycat读写分离性能测试
1. MySQL主从配置 我们的方案设计基于Mysql的主从数据复制功能,以下是基于mysql5.5以上版本最新的主从配置. 开启mysql主从数据复制,主要在mysql的my.ini文件中设置 ...
- Sum of Subsequence Widths LT891
Given an array of integers A, consider all non-empty subsequences of A. For any sequence S, let the ...
- SBT实操指南
参考资料:1.英文官方文档2.中文官方文档,内容翻译的不全 SBT是类似maven和gradle的自动构建和包依赖管理工具,SBT是Scala技术体系下的包管理工具,都是Lightbend公司开发的, ...
- 关于oracle 索引,收藏
该篇文章很好,,收藏了.. https://www.cnblogs.com/liangyihui/p/5886619.html oracle 索引建立: create bitmap/UNIQUE i ...
- OO第二单元多线程电梯总结
OO第二单元多线程电梯总结 第一次作业 设计思路 Input为输入线程,负责不断读取请求并将读到的请求放入调度器中. Dispatcher为调度器,是Input线程和Elevator线程的共享对象,采 ...