美文网首页
JS练习2:数组(牛客)

JS练习2:数组(牛客)

作者: pp_5793 | 来源:发表于2018-10-16 21:12 被阅读0次

1 sort()方法

Array.sort()方法将数组中的元素排序并返回排序后的数组。当不带参数调用sort()时,数组元素以字母表顺序排序(如有必要将临时转化为字符串进行比较):

var a=new Array ("banana","cherry","apple");
a.sort();
var s= a.join(", ");//join()方法把字符串用"  "中的符号连接起来  返回值为:s= "apple,banana,cherry"
var s=a.join("-");//返回值为 s="apple-banana-cherry"

如果数组包括undefined元素,它们会被排挤到数组的尾部。为了按照其他方式而非字母表顺序进行排序,必须给sort ()方法进行评估。假设第一个参数应该在前,比较函数应该返回一个比0小的数,反之,返回一个比0大的数。如果两个值相等的话返回0.

var a=[33,4,1111,222];
a.sort(0);//字母表排序(看第一个字母):1111,222,33,4
a.sort(function(a,b){
return a-b;});
//返回4,33,222,1111(从小到大)

如果是

a.sort(function(a,b){return b-a})//则返回1111,222,33,4(从大到小)

还有一个例子:

var a=['cnt','Bug','aat','Dog'];
a.sort();//区分大小的排序,优先排大写字母,再排小写
a.sort(function(s,t){
var a=s.toLowerCase();
var b=t.toLowerCase();
if(a<b)return -1;
if(a>b)return 1;
return 0;
})
console.log(a);

以上代码返回['aat','Bug','cnt','Dog']

现在我们对以上代码进行解释,toLowerCase()方法是可以把参数转换为小写字符串,再对他们进行有统一比较。

forEach()方法

forEach()方法从头至尾遍历数组,为每个元素调用指定的函数。

var data=[1,2,3,4,5];
var sum=0;
data.forEach(function(value){sum+=value;})
console.log(sum);
data.forEach(function(v,i,a){a[i]=v+1;})
console.log(data);

返回15
[2,3,4,5,6]
其中forEach(v,i,a)这三个参数分别表示为:数组的元素值,元素索引,数组名(数组本身)。
当只有一个参数时,那就表示数组元素。

map()方法

map()方法将调用的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。

var a=[1,2,3];
var b=[];
b=a.map(function(x){return x=x*x;});
console.log(b);

返回值为[1,4,9]
注意map()方法返回值是数组

filter()方法

该方法返回的数组元素是调用的数组的一个子集。传递的函数是用来逻辑判定的:该函数返回true或false。
调用判定函数就像forEach()和map()一样,如果返回值为true,那么传递给判定函数的元素就是这个子集的成员,它将被添加到作为一个作为返回值的数组中;

var a=[5,4,3,2,1];
 var smallvalues=[];
 smallvalues=a.filter(function(x){return x<3;});
console.log(smallvalues);

返回值为:[2,1]
所以filter()中如果参数满足函数则把所有满足条件的参数添加到新的数组中,返回新的数组。

every()和some()方法

这两个方法都是对数组的逻辑判定:它们对数组元素指定的函数进行判定,并返回true或false。
every()方法就像数学中的任意号
some()方法就像数学中的存在号

a=[1,2,3,4,5];
a.every(function(x){return x<10;})//返回trun:所有元素都小于10
a.some(function(x){reyturn x>3;})//返回trun:存在大于3的元素

注意这里所有和存在两者的差距

reduce()和reduceRight()

这俩呢是使用指定的函数将数组元素进行组合,生成单个值。

var a =[1,2,3,4,5];
var sum=a.reduce(function(x,y){return x+y;},0);
var max=a.reduce(function(x,y){return (x>y)?x:y; });
console.log(sum,max);
//返回值为15 5

我们可以看到reduce中有两个参数,第一个参数是一个函数,第二个参数是一个数值代表传入函数的初始值。
其中第一次传入初始值后,会改变这个量。这样说有点懵逼。看下面的解释:
比如上面给出的者第一个例子:
第二个参数是0,代表函数的初始值x=0,进行0+1=1后返回给新的初始值变为1,然后继续X=1,1+2=3,再将当做新的初始值进行运算,x=3,3+3=6,以此类推,x=6,6+4=10,x=1,10+5=15。最后返回最后的值15。
注意第二个参数是可选的。
没有第二个参数,则直接运行函数与数组中的元素就可以了。
ruduceRight()的工作原理和reduce()一样,不过它是从数组的右边进行处理数组元素的。

相关文章

  • JS练习2:数组(牛客)

    1 sort()方法 Array.sort()方法将数组中的元素排序并返回排序后的数组。当不带参数调用sort()...

  • JS练习:数组类(牛客)

    1 要求输入一个数组和一个元素,如果元素在数组中,则返回数组中的位置,否则返回-1。 代码1:浏览器支持index...

  • 牛客JS题目练习

    1、找出元素 item 在给定数组 arr 中的位置 2、计算给定数组 arr 中所有元素的总和 3、移除数组 a...

  • 常用数组操作方法

    (最近除了项目在练习自己的编程能力,以下是牛客网练习的知识点小总结? ) 注意:数组相关学习建议到MDN学习htt...

  • 牛客网Java练习2

    链接:https://www.nowcoder.com/questionTerminal/d78556800794...

  • 牛客网SQL实战练习——11~15

    牛客网SQL实战练习——11~15 声明:练习牛客网SQL实战题目,整理笔记。11.获取所有员工当前的manage...

  • 牛客网SQL实战练习——16~20

    牛客网SQL实战练习——16~20 声明:练习牛客网SQL实战题目,整理笔记。16.统计出当前各个title类型对...

  • js 数组练习

    数组:多个变量集合 var arr=[ ]; var arr=new Array(); var arr=...

  • 牛客网SQL实战练习——26~40

    牛客网SQL实战练习——26~40 声明:练习牛客网SQL实战题目,整理笔记!26.汇总各个部门当前员工的titl...

  • 牛客网SQL实战练习——1~5

    牛客网SQL实战练习——1~5 声明:练习牛客网SQL实战题目,整理笔记。1.查找最晚入职员工的所有信息 分析:查...

网友评论

      本文标题:JS练习2:数组(牛客)

      本文链接:https://www.haomeiwen.com/subject/pvhkzftx.html