定义一个变量a =数组第一个元素,b=0 (也就是在数组中的位置)。 然后 for 循环数组,拿数组的每个元素和a 比较。比a大的,赋值给a,然后b=当前for循环的值。 循环结束后,b就是最大数值的位置。。思路就是这样。自己写收获更大
//最小值
Arrayprototypemin
=
function()
{
var
min
=
this[0];
var
len
=
thislength;
for
(var
i
=
1;
i
<
len;
i++){
if
(this[i]
<
min){
min
=
this[i];
}
}
return
min;
}
//最大值
Arrayprototypemax
=
function()
{
var
max
=
this[0];
var
len
=
thislength;
for
(var
i
=
1;
i
<
len;
i++){
if
(this[i]
>
max)
{
max
=
this[i];
}
}
return
max;
}
如果你是引入类库进行开发,害怕类库也实现了同名的原型方法,可以在生成函数之前进行重名判断:
if
(typeof
Arrayprototype['max']
==
'undefined')
{
Arrayprototypemax
=
function()
{
}
}
要求:返回数组里4个子数组中最大的数字,该新数组由4个最大的数字组成。
例如:largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]])
返回:[5,27,39,1001]
给你理下逻辑,你的需求分两部分
获取数组的最大数值,如下:
Mathmaxapply(Math,[1,2,3,4,5]);
获取某数值下的下标值,把第一点的数据,用遍历的方式匹配,从而返回当前下标值,如下:
var list=[1,2,3,4,5],max=5,index=-1;for(var i=0,len=listlength;i<len;i++){
if(list[i]==max){
index=i;
break;
}
}
return index;
以上,就不组合了,靠自己尝试。
前言
面试遇到一个问题:JS数组求和函数。我第一想到的就是数组循环。然而我觉得面试官问这个问题一定不是想考这个人人皆知的方法。当时机智的我竟然想到了递归函数不断加和数组的项,然而折腾了好久都没调好方法,事实证明这并不是最优解。最后面试官问我有没有见过reduce(),真木有哇。所以回来查资料,Arrayreduce()是ES5新增的新属性,相似的还有ArrayreduceRight()。
下文来总结一下数组求和的方法。
最粗暴的方法:循环获取
通过for循环一项项地加和。看代码:
Arrayprototypesum
=
function
(){
var
result
=
0;
for(var
i
=
0;
i
<
thislength;
i++)
{
result
+=
this[i];
}
return
result;
};
[1,4,7,2,10]sum();
//
24
使用reduce方法
利用reduce方法,可以写一个数组求和的sum方法。
reduce()方法接收一个函数作为累加器,数组中的每个值(从左到右)开始缩减,最终为一个值。
reduce的语法:
arrayreduce(callback[,
initialValue]);
callback函数接受4个参数:previousValue(上次调用回调返回的值)、currentValue(当前被处理的元素)、index(索引)以及数组本身(第一次调用
callback的第一个参数),执行数组中每个值的函数。
initialValue参数可选,表示初始值;initialValue参数若指定,则当作最初使用的previous值,如果缺省,则使用数组的第一个元素作为previous初始值,同时current往后排一位。
Arrayprototypesum
=
function
(){
return
thisreduce(function
(partial,
value){
return
partial
+
value;
})
};
[1,4,7,2,10]sum();
//
24
相比第一种方法,使用reduce()方法的效率更高。
这两种方法的效率比较可以直接在函数运行前后分别调用new
Date()获取即时时间,从而通过时间差比较执行时间。这里就不比较了,因为每个人的执行环境差异较大。测试结果是reduce()方法的执行时间更短。
JS数组求和函数,并求出数组中的最大值
实例代码
<!DOCTYPE
html
PUBLIC
"-//W3C//DTD
XHTML
10
Transitional//EN"
">
我 来给出一种吧:
var a = new Array(1, 2, 3, [4, 5, [6, 7]]);
var b = atoString()split(',')sort();
alert(bpop()); //最大值
alert(bshift());//最小值
var a=[1,2,3,4,5,6];
var max=0;
for(var i=0;i<alength;i++){
if(a[i]>max){
max=a[i];
}
}
利用for循环将max和每个数去比较大小,如果有比max大的,就让max等于这个数,最后得出来就是最大的
以上就是关于js如何求数组元素最大值在数组中的位置全部的内容,包括:js如何求数组元素最大值在数组中的位置、javascript如何获取数组中的最大值和最小值、JS 返回数组中最大的数字等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)