我想提取每个单个数组的最大数量。我相信它应该可以使用.map函数。
这是我到目前为止所做的,但不幸的是,这会返回“[undefined,undefined,undefined,undefined]”
代码:
function largestOfFour(largestOfFour) {
largestOfFour.forEach(function(number){
number.sort(function(a, b){
return b - a;
});
highestValue = number.map(function(number){
return number[0];
});
});
};
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
答案 0 :(得分:2)
使用Math.max
找到每个数组中最大的数字的方法较短:
function largestOfFour(arr) {
return arr.map(function (el) {
return Math.max.apply(null, el);
});
}; // [ 5, 27, 39, 1001 ]
答案 1 :(得分:2)
你正在迭代外部数组,
function largestOfFour(largestOfFour) {
largestOfFour.forEach(function(number){
然后对内部数组进行排序
number.sort(function(a, b){
return b - a;
});
然后在那些内部数组中,您尝试从每个值获取[0]
属性,即undefined
highestValue = number.map(function(number){
// you redefine `number` here to be the value within the inner array
return number[0];
});
您可能想要做的是map
外部数组:
function largestOfFour(largestOfFour) {
largestOfFour.map(function(numbers){
对内部数组进行排序:
numbers.sort(function(a, b){
return b - a;
});
然后返回第一个值:
return numbers[0];
所有这一切可能应该是:
function largestOfFour(largestOfFour) {
return largestOfFour.map(function(numbers){
numbers.sort(function(a, b){
return b - a;
});
return numbers[0];
});
}
虽然有更简单的方法可以找到数组数组的最大值。
一个这样的例子是使用Array.prototype.reduce
:
function largestValues(outer) {
return outer.map(function (inner) {
return inner.reduce(function (prev, current) {
return Math.max(prev, current);
}, Number.NEGATIVE_INFINITY);
});
}
答案 2 :(得分:0)
http://jsfiddle.net/y48qz6hx/ 刚修好你的代码
function largestOfFour(largestOfFour) {
largestOfFour.forEach(function(number, index){
number.sort(function(a, b){
return b - a;
});
largestOfFour[index] = number[0];
});
alert(largestOfFour);
};
largestOfFour([[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]]);
答案 3 :(得分:0)
试试这个:
var ar=[[4, 5, 1, 3], [13, 27, 18, 26], [32, 35, 37, 39], [1000, 1001, 857, 1]];
console.log( ar.map(x=> Math.max.apply(null, x)) )