js的数组(二)

今天来做第二题,rt:

计算数组的集合,已知数组都是number类型。求和

很简单的一道题目,一般都是遍历之后每一个i += 然后return出去,没啥好说的,先介绍几个js方法,就不会这么认为了。

1.Array.prototype.reduce():

2.forEach,之前有写过,不清楚的可以看第一篇

3.map,同上

4.常用的for循环

5.eval  这是一个黑科技,感觉有背js设计,但是很简单,也能满足需求

1.Array.prototype.reduce():看看兼容如何,ie9以上,其他全兼容(chrom,firefox),mdn上原话是:The reduce() method applies a function against an accumulator and each element in the array (from left to right) to reduce it to a single value.翻译了一下reduce() 方法对累加器和数组中的每个元素 (从左到右)应用一个函数,将其减少为单个值。

我也看不懂,看看语法:

array.reduce(function(accumulator, currentValue, currentIndex, array), initialValue)个人认为,就是reduce接受一个函数,里面有4个参数让你填,1.初始值,或者上一次回调的返回值;2.数组正在处理的的元素,也就是循环中每次遍历的i;3.元素索引相当于循环汇总的i;4.就是数组,需要处理的数组;5.initialValue,就是设置初始值,如果不填,那么数组中的第一个就是初始值,空数组直接报错!!

思路:reduce接受4个参数,那么我们只要前两个参数就可以完成,上一次回调的返回值,个人理解,当数组[1,2,3,4]第一次一个参数是1,那么第二次就是进行运算之后的值,第三次就是第二次的值+第4个值,以此类推索引值不需要pass,数组可选可不选,说的不是很清楚,这张图应该看明白了。最后返回结果是10,https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/Reduce  原文地址;

上代码解题:
var arr = [1,2,3,4,5];
if(Array.prototype.reduce()){
  arr.reduce(function(a,b){
    return a+ b
},0)
}返回:15

如果这个初始0设置成10,那么就是10 +15 =25 返回25;

2.forEach解题:

var arr = [1,2,3,4,5];
var num = 0;
arr.forEach(function(val, index, arr){
    num += val
})

return num

//返回15

3.map解题:

var arr = [1,2,3,4,5];
var num = 0;
arr.map(function(a){
  num +=a
})
return num ;
//返回15

4.一般循环

var arr = [1,2,3,4,5];
var num = 0;
for(var i = 0;i<arr.length;i++){
   num += arr[i]
}
return num;
//返回 15

5.eval

避免在不必要的情况下使用eval,重要!

eval很特别,他可以把数字类的字符串进行运算。属于String类吧,但是他可以+-*%,number类吧,他只接受string!

上代码:

var arr = [1,2,3,4,5];
var num = eval(arr.join(‘+‘));
console.log(num)
console.log(typeof num)

//返回 15
//返回 number -。-

总结:虽然eval很简单,但是还是不要用好一点,也就是面试的时候嘚瑟嘚瑟,没啥用,解决实际的map最佳。

写这篇文章的时候也是学习,reduce的api,复习forEach的api,这些比较简单的题目,可以多练习,打好基础比什么都重要,这是对自己说的。

 
 
时间: 2025-01-06 00:04:44

js的数组(二)的相关文章

JS的数组相关知识

创建数组方法一: var a1=new Array(5); console.log(a1.length);//5 console.log(a1); //[] ,数组是空的 var a2=new Array(5,6); console.log(a2.length);//2 console.log(a2); //[5,6] 创建数组二: var a1=[5]; console.log(a1.length);//1 console.log(a1); //[5] var a2=[5,6]; consol

【高德地图API】从零开始学高德JS API(二)地图控件与插件——测距、圆形编辑器、鼠标工具、地图类型切换、鹰眼鱼骨

摘要:无论是控件还是插件,都是在一级API接口的基础上,进行二次开发,封装的一系列更加便于开发者使用,减少开发者工作量的二级API接口.除了官方通用的鱼骨.鹰眼控件,还有大量官方开发的地图插件,类似谷歌的lib.当然本文还会介绍自定义插件的使用. ------------------------------------------------------------------------------------------------- 第一部分 控件 目前官方支持的控件包含:缩放控制条-地图

js去除数组重复项

原文:js去除数组重复项 第一次写,感觉不知道写啥,想了半天决定还是用以前用过的一些东西,看了看就写数组去除重复项算了^_^. 去除数组重复项有很多方法,之前因为用到,看了一下以前搜集的一些代码,进行比较,在这里总结一下,希望能给各位有所帮助,有什么问题,请各位大神不吝指导. 方法一: //两个for循环 Array.prototype.delRepeat1 = function () { var r = new Array(); label: for (var i = 0, n = this.

js的数组操作

用 js有很久了,但都没有深究过js的数组形式.偶尔用用也就是简单的string.split(char).这段时间做的一个项目,用到数组的地方很多,自以为js高手的自己居然无从下手,一下狠心,我学!呵呵.学了之后才知道,js数组的功能强大很,远比VB,C#强多了,大家慢慢看吧 1.数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长度 var arr

JS基础——数组总结

JS中数组被认为是一种对象,慢慢的,怎么忽然感觉,JS中只要可以独立出来的概念怎么都可以当成对象来解释呢?有点儿怀疑.继续学吧.先来总结一下JS中数组是如何具体使用的. 一.创建 数组的创建在JS中和Object基本上是一样的.他可以通过new关键字来声明,也可以通过字面量的方法来创建.JS中数组创建只支持一维数组. 1.new var box=new Array();//new 关键字可省略,内部可对数组进行初始化,或者声明元素的个数,这点其它语言相同 2.字面量 var box=[]; //

JS 中数组的排序和去重

在 PHP 中,数组有很多排序方法,不过其他语言的数组中大概是不会像 JS 的数组一样,包罗万象,啥都通吃的.所以 JS 的数组排序情况就略多一些了. 简单粗暴的排序: 赤果果的sort: var  arr = ['Jason','Eric','Rose','Paul'] arr.sort()// arr => ['Eric','Jason','Paul','Rose']; 这样排序的前提是数组本身元素类型单一,都为数字或者字符串,默认排序为按照首字母进行增序: 稍微不那么粗暴的:  有排序函数

js中数组Array的操作

JS中数组有很多操作,作为前端多多少少知道点,但每次要用时都需要去百度,有点麻烦,所以在这儿做个备忘,简单总结些平时最常用的数组操作. shift:删除原数组第一项,并返回删除元素的值: var a = [1,2,3,4,5]; var b = a.shift(); //a:[2,3,4,5] b:1 注:如果数组为空则返回undefined unshift:将参数添加到原数组开头,并返回数组的长度 var a = [1,2,3,4,5]; var b = a.unshift(-2,-1); /

JS遍历数组类型元素

已停供用户不能再次停供,之前没太处理过多维数组的遍历,趁这个机会回顾一下js数组遍历 可以看出rows 获取了两条数据,为二维数组类型 方法 function batchTgWin() { var rows = frames['threeModel'].$("#moddleUserList").datagrid('getRows'); if (rows.length == 0) { alert('请至少一户进行停供!'); return; } var bhArr = []; var f

js删除数组中的元素

js删除数组中的元素delete和splice的区别 例如有一个数组是 :var textArr = ['a','b','c','d']; 这时我想删除这个数组中的b元素: 方法一:delete 删除数组 delete textArr[1] 结果为: ["a",undefined,"c","d"] 只是被删除的元素变成了 undefined 其他的元素的键值还是不变. 方法二:aplice 删除数组 splice(index,len,[item]

进击Node.js基础(二)

一.一个牛逼闪闪的知识点Promise npm install bluebird 二.牛逼闪闪的Promise只需三点1.Promise是JS针对异步操作场景的解决方案 针对异步的场景,业界有很多解决方案,如回调.事件机制 Promise是一个对象,同时它也一种规范,针对异步操作约定了统一的接口,表示一个异步操作的最终结果以同步的方式来写代码,执行的操作是异步的,但是又保证程序的执行顺序是同步的. 原本是社区的一个规范的构想,被加入到ES6的语言标准里面,比如Chrom,Firefox浏览器已对