以正确的方式填充阵列并从中获得最大值

时间:2017-06-28 15:11:40

标签: javascript arrays loops push

我对Javascript很新,我很难找到解决方案。 我得到了一个名为pat的动态变化数组。数组的元素具有坐标x和y。 所以现在,我想使用一个循环将所有元素的所有x值存储到一个名为newArray的新数组中。然后在填充newArray之后,我希望从中获得最大值。问题是,我目前很难以正确的方式使用push函数。我的代码如下。希望,有人可以提供帮助。谢谢你们!

for ( i = 0; i < pat.length; i++ ) {
    console.log(pat[i].x);
    var newArray = pat.push[i];
    console.log(newArray);
};

2 个答案:

答案 0 :(得分:1)

像这样使用push

var newArray = []; // create an empty array

for (var i = 0; i < pat.length; i++) {
  newArray.push(pat[i].x); // push the x value of the current element to the array
};

var max = Math.max.apply(null, newArray); // calculate the maximum of all x values

使用map的更实用的方法是:

var newArray = pat.map(obj => obj.x);
var max = Math.max.apply(null, newArray);

PS:你确定要调用数组newArray吗?

编辑:我的解决方案来计算这样的最大值:Math.max返回其所有参数的最高值。 apply使用数组的元素作为参数调用Math.max

答案 1 :(得分:0)

你应该在for循环之外解析数组,否则它将在每次迭代时重新声明。您可以使用array literal syntax var arrayName = [];声明数组。要向元素添加元素,您应该使用arrayName. push (value)方法。要找到数组中的最大数字,我们必须使用Math这是内置对象,它具有数学常量和函数的属性和方法。 我们只需要来自那些以数字作为参数的对象的max方法,从中返回最大的Math.max(a, b, c, d ...),而只需要数字我们不能将Array作为参数传递给为此,我们可以使用来自Function.prototype.apply(apply方法,它调用具有给定值的函数,并将参数作为数组(或类似数组的对象)提供。 这就是我们如何在您的案例中将数组作为Math.max.apply(thisArg, [argumentsAsArray]);Math.max.apply(null, newArray);的参数。

var newArray = []; // create an empty array outside the for loop
for ( i = 0; i < pat.length; i++ ){
   newArray.push(pat[i].x); // add new element to the array
}

console.log(newArray);

var max = Math.max.apply(null, newArray); // take biggest number from the array
console.log(max);