我有一个股票数组,每个股票有3个属性。我想从数组中得到价格属性,找出最高/最低价格,并返回最高/最低价格的对象。
'use strict';
const stocks = [
{ company: 'Splunk', symbol: 'SPLK', price: 137.55 },
{ company: 'Microsoft', symbol: 'MSFT', price: 232.04 },
{ company: 'Oracle', symbol: 'ORCL', price: 67.08 },
{ company: 'Snowflake', symbol: 'SNOW', price: 235.8 },
{ company: 'Teradata', symbol: 'TDC', price: 44.98 }
];
我想得到股票中每个对象的价格,并返回价格最高的对象作为max,返回价格最低的对象作为min。
// Function for highest/lowest price
function findStockByPrice(stocks) {
const max = Math.max.apply(null, stocks.price);
const min = Math.min.apply(null, stocks.price);
if (max === true) {
return stocks
} else if (min === true) {
return stocks
}
}
我正在尝试使用Math.max(),但收到ReferenceError:未定义max。
2条答案
按热度按时间xfb7svmp1#
您的代码有几个问题。首先,您试图对stocks.price属性调用Math.max(),但stocks是一个对象数组,而不是单个对象。因此,stocks.price未定义,您将得到一个ReferenceError。
其次,Math.max()需要一个数字数组作为参数,但您传递给它的是一个对象。因此,即使您修复了ReferenceError,Math.max()也不会按预期工作,因为它无法对对象进行操作。
若要修正这些问题,您可以先使用map()方法,从stocks数组中的每个对象撷取price属性,然后将产生的price数组传递给Math.max()和Math.min(),以找出最大值和最小值。
以下是如何实现findStockByPrice()函数以查找价格最高和最低的对象:
然后,您可以使用此函数,如下所示:
bvjxkvbb2#
首先,在
max
前面缺少const
,在函数内部缺少min
;其次,正如ak.leimrey在他们的注解中指出的,Math.max()
需要一个数组。您可以使用
Math.max()
和Math.min()
方法来寻找股票数组中的最高价和最低价,然后使用find()
方法来传回具有这些价格的对象: