我对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);
};
答案 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);