js--数组的reduce()方法的使用介绍】的更多相关文章

以下是个人在工作中收藏总结的一些关于javascript数组方法reduce的相关代码片段,后续遇到其他使用这个函数的场景,将会陆续添加,这里作为备忘. javascript数组那么多方法,为什么我要单挑reduce方法,一个原因是我对这个方法掌握不够,不能够用到随心所欲.另一个方面,我也感觉到了这个方法的庞大魅力,在许多的场景中发挥着神奇的作用. 理解reduce函数 reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. a…
前言 阅读文章之前先来考虑一个问题,如何去实现迭代一个数组,并且把它累加到一个值中?首先能够想到的是设置一个初始值,然后通过循环遍历这个数组,将数组中的值一项一项累加起来,然后返回这个设置的值就是最终的结果.这样实现起来也不算太复测,不需要写太多的代码,这篇就介绍一个数组的进阶一点的用法--reduce()的用法. 正文 reduce()的基本概念 定义:reduce() 方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终计算为一个值. reduce() 对于空数组是不会执行回…
数组经常用到的方法有push.join.indexOf.slice等等,但是有一个经常被我们忽略的方法:reduce,这个方法简直强大的不要不要的. 我们先来看看这个方法的官方概述:reduce() 方法接收一个函数作为累加器(accumulator),数组中的每个值(从左到右)开始缩减,最终为一个值. 你一定也和我一样看的有点迷糊,其实reduce接收的就是一个回调函数,去调用数组里的每一项,直到数组结束. 我们来举个栗子大家就很明白了.假设我有一串数组,数组里放的全是数字,我要算出这些数字的…
JS数组去重的几种常见方法 一.简单的去重方法 // 最简单数组去重法 /* * 新建一新数组,遍历传入数组,值不在新数组就push进该新数组中 * IE8以下不支持数组的indexOf方法 * */ function uniq(array){ var temp = []; //一个新的临时数组 for(var i = 0; i < array.length; i++){ if(temp.indexOf(array[i]) == -1){ temp.push(array[i]); } } ret…
数组Array 1. 数组定义 一系列数据的集合成为数组.数组的元素可以为任何类型的数据(包括数组,函数等),每个元素之间用逗号隔开,数组格式:[1,2,3]. 2. 数组创建方式 (1) 字面量方法 var arr = [1,2,3]; (2) 使用构造函数创建 var arr = new Array(); //创建一个空数组[] var arr = new Array(3); //创建一个长度为3的数组(数组项都为undefined) var arr = new Array('小鸣',18,…
数组 1. 基本方法  1)Array.prototype.unshift(item1,item2,item3...) 描述: 在数组的前面添加元素,一次可以传入多个参数. 注意:元素会根据当前传入的顺序添加到数组的前面. 示例: var arr = ['a','b','c'] var result = arr.unshift(9) console.log(result) console.log(arr)// [9,'a','b','c'] var result1 = arr.unshift(9…
数组常用的方法: x.toString()方法:任何对象都有toString方法.        将任何对象转为字符串. 一般不主动调用,系统在需要时自动调用 x.valueOf()方法:同toString()  基本完全一样. var str = arr.join("分隔符"):将数组转为字符串.但是可以自定义分隔符!  默认符号为逗号 用法:将字符拼接为单词或句子.  固定用法:  chars.join(''); <!DOCTYPE HTML> <html lan…
如果要使用数组的forEach()方法对其改值时,需要直接通过arr[i]这种方式来更改. 请看下面代码: // 数组改值 let arr = [1,3,5,7,9]; arr.forEach(function(item){ item = 30; }) console.log(arr); //输出 (5) [1, 3, 5, 7, 9] 显然没有达成目的,下边这样写可以实现 // 数组改值 let arr = [1,3,5,7,9]; arr.forEach(function(item,inde…
一.数组去重 var arr = [0,1,20,3,0,45,6,0]; Array.prototype.unrepeat = function(){ var array = []; for(var i = 0;i<this.length;i++){ if(array.indexOf(this[i]) === -1){ array.push(this[i]); } } return array; } console.log(arr.unrepeat()); 二.数组排序 var arr = […
定义和用法 sort() 方法用于对数组的元素进行排序. 语法    arrayObject.sort(sortby) 参数sortby:可选.规定排序顺序.必须是函数. 返回值 对数组的引用.请注意,数组在原数组上进行排序,不生成副本. 普通数组排序: js中用方法sort()为数组排序.sort()方法有一个可选参数,是用来确定元素顺序的函数.如果这个参数被省略,那么数组中的元素将按照ASCII字符顺序进行排序.如: 字母A.B的ASCII值分别为65.66,而a.b的值分别为97.98,所…
  ES5为数组对象定义了5个迭代方法(即递归,简单的说就是自己可以调用自己). 每个方法接收两个参数:要在每一项上运行的函数(接收3个参数:数组项的值,该项在数组中的位置,数组对象本身)和(可选的)运行该函数的作用域对象--影响this的值. 以下是这5个迭代方法的作用: every()对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true ; filter()对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组 ; forEach()对数组中的每一项运…
js call call 方法 请参阅 应用于:Function 对象 要求 版本 5.5 调用一个对象的一个方法,以另一个对象替换当前对象. call([thisObj[,arg1[, arg2[, [,.argN]]]]]) 参数 thisObj 可选项.将被用作当前对象的对象. arg1, arg2, , argN 可选项.将被传递方法参数序列. 说明 call 方法可以用来代替另一个对象调用一个方法.call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对…
1.检测数组 ①Instanceof: if(value instanceof Array){ } 它假定只有一个全局执行环境,若网页中包含多个框架,则存在多个不同的全局执行环境,则Instanceof不能正确检测: ② Array.isArray() 无论几个全局执行环境都可以: if(Array.isArray(value)){ } 2.转换方法 ③ toString() 会返回数组的每个值拼接起来的字符串(以逗号分隔):不会影响原数组: var colors=['red','black',…
修改器方法 下面的这些方法会改变调用它们的对象自身的值: Array.prototype.copyWithin()  在数组内部,将一段元素序列拷贝到另一段元素序列上,覆盖原有的值. Array.prototype.fill()  将数组中指定区间的所有元素的值,都替换成某个固定的值. Array.prototype.pop() 删除数组的最后一个元素,并返回这个元素. Array.prototype.push() 在数组的末尾增加一个或多个元素,并返回数组的新长度. Array.prototy…
split()方法:var words = sentence.split(' '): "hello".split("", 3) //可返回 ["h", "e", "l"] 数组声明:方法一:var a = new array();a[0] = "1";a[1] = 2;a[2] = { x:1, y:3};方法二:var  a  =  new array("1" ,…
<!DOCTYPE html><html><head> <title>数组的方法</title> <meta charset="utf-8"></head><body> <script type="text/javascript">/* //转换方法 var box = Array("161班","XX同学","…
方法一: 新建一个数组,遍历原数组,在新数组内用IndexOf查找原数组内的每一项,如果没有找到,则添加到其中 代码如下: function arrayNew(arrs ){ var newArray = []; for(var i=0;i<arrs.length;i++){ if(newArray.indexOf){ if(newArray.indexOf(arrs[i])==-1){newArray.push(arrs[i])} } else{ if(indexOf(arrs[i],newA…
//->自己在内置类的原型上扩展一个myForEach来处理forEach不兼容的问题//callBack:回调函数,遍历数组中的一项,就要执行一次callBack//context:改变callBack方法中的this指向 Array.prototype.myForEach = function myForEach(callBack, context) { typeof context === "undefined" ? context = window : null; if…
w3school文章链接:http://www.w3school.com.cn/jsref/jsref_splice.asp splice:拼接,结合. splice()方法向数组添加/删除元素,返回被删除的元素. 如下示例: splice参数解释: arr.splice(start,deleteCnt,args); start:必需.整数,规定添加添加元素的位置,使用负数可从数组结尾处规定位置. deleteCnt:必需.要删除的元素的数目.如果设置为0,则不会删除元素. args:可选.向数…
说明一下,ECMAScript没有定义使用哪种排序算法,各个浏览器的实现方式会有不同.火狐中使用的是归并排序,下面是Chrome的sort排序算法的实现. sort方法源码 DEFINE_METHOD( GlobalArray.prototype, sort(comparefn) { CHECK_OBJECT_COERCIBLE(this, "Array.prototype.sort"); if (!IS_UNDEFINED(comparefn) && !IS_CALL…
迭代器方法:对数组中的每一个元素应用一个函数,可以返回一个值,一组值或者一个新的数组.说的什么啊这是,根本听不懂.实践 不生成新数组的迭代器的方法: <html> <head> <title>数组的字符串表示</title> <script type="text/javascript"> function square(num){ alert(num+","+num*num); } function B()…
1.push() //可以接受任意参数,然后添加到数组的末尾 2.pop()//栈方法,在数组末尾删除一条数据,并且返回这条数据 3.shift()//队列方法,与pop()相似,但是与其相反,在数组的开始位置删除一条数据,并返回这条数据. 4.reverse(),sort() //数组排序方法,sort()方法默认按每条数据的首字母排序,例如:1,3,34,21,22如果不传入比较参数array.sort()为1,21,22,3,34 为了让其可以按数字排序,则必须添加一方法, functio…
怎么判断一个对象是不是数组? 首先可以用 ES5 提供的 isArray 方法进行判断(注意:Array.isArray是ES 5.1推出的,不支持IE6~8,所以在使用的时候也应注意兼容问题. ) 可以使用 instanceof Array 来判断,不过这种方式存在问题,比如当存在多个全局对象(如使用ifream),那么这个窗口的Array对象对另一个窗口使用 instanceof 就会判断失败 通过 toString 来进行判断 function isArray(value){ return…
//数组去重 Array.prototype.unique = function() { var newArr = [], hash = {}; for(var i=0, len=this.length; i<len; i++) { if(!hash[this[i]]) { newArr.push(this[i]); hash[this[i]] = true; } } return newArr; }…
var arr = ['A','B','C','D']; length 计算数组的长度 arr.length//4   indexOf() 搜索一个指定的元素的位置 arr.indexOf('C');//2 arr.indexOf('d');//-1,不存在返回-1   slice() 截取数组的部分长度,然后返回新的数组 arr.slice(0,3);//从开始索引0开始,到结束索引结束,但不包括结束索引,['A','B','C'] arr.slice(3);//从7开始到结束,['D'']…
<html> <head> <title>数组的操作</title> <script type="text/javascript"> function B(){ var names=["zhangsan","lisi","wangwu"]; var name=document.getElementById("name").value; var po…
concat 返回一个新数组,这个数组是由两个或更多数组组合而成的 array.concat(b,c); join 返回字符串值,其中包括了连接到一起的数组的所有元素,元素由指定分隔符分割开来 array.join(',') pop 移除数组中的最后一个元素并返回该元素 array.pop(); push 将新元素添加到一个数组中,并返回数组的新长度值 array.push(a); shift 移除数组中的第一个元素并返回该元素 array.shift(); unshift 将指定的元素插入数组…
var values = [1,2,3,4,5] var sum = values.reduce(function(pre,cur,index,array){ return pre + cur }) alert(sum) reduceRight()与reduce()的区别是从右往左…
function createArr(){ var arr = new Array(); arr.push.apply(arr,arguments); arr.toJoin = function(){ return this.join(","); } arr.toSlice = function(start,end){//start num //end num return Array.prototype.slice.call(this,start,end+1) } return ar…
    //头部     //this.list.unshift({name:this.itemName,date:new Date()});     //尾部         this.list.push({name:this.itemName,date:new Date()});…