javascript 我有一个对象数组,我想知道如何从数组中的对象获取属性并在函数中使用它?

vbopmzt1  于 2022-12-02  发布在  Java
关注(0)|答案(2)|浏览(132)

我有一个股票数组,每个股票有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。

xfb7svmp

xfb7svmp1#

您的代码有几个问题。首先,您试图对stocks.price属性调用Math.max(),但stocks是一个对象数组,而不是单个对象。因此,stocks.price未定义,您将得到一个ReferenceError。
其次,Math.max()需要一个数字数组作为参数,但您传递给它的是一个对象。因此,即使您修复了ReferenceError,Math.max()也不会按预期工作,因为它无法对对象进行操作。
若要修正这些问题,您可以先使用map()方法,从stocks数组中的每个对象撷取price属性,然后将产生的price数组传递给Math.max()和Math.min(),以找出最大值和最小值。
以下是如何实现findStockByPrice()函数以查找价格最高和最低的对象:

function findStockByPrice(stocks) {
// Extract the price property from each object in the stocks array
const prices = stocks.map(stock => stock.price);

// Find the maximum and minimum price
const max = Math.max(...prices);
const min = Math.min(...prices);

// Find the object with the highest price
const maxStock = stocks.find(stock => stock.price === max);

// Find the object with the lowest price
const minStock = stocks.find(stock => stock.price === min);

return { max: maxStock, min: minStock };}

然后,您可以使用此函数,如下所示:

const stockPrices = findStockByPrice(stocks);

console.log(stockPrices.max); // { company: 'Snowflake', symbol: 'SNOW', price: 235.8 }
console.log(stockPrices.min); // { company: 'Oracle', symbol: 'ORCL', price: 67.08 }
bvjxkvbb

bvjxkvbb2#

首先,在max前面缺少const,在函数内部缺少min;其次,正如ak.leimrey在他们的注解中指出的,Math.max()需要一个数组。
您可以使用Math.max()Math.min()方法来寻找股票数组中的最高价和最低价,然后使用find()方法来传回具有这些价格的对象:

function findStockByPrice(stocks) {
  // Find the highest and lowest prices in the stocks array
  const maxPrice = Math.max(...stocks.map((stock) => stock.price));
  const minPrice = Math.min(...stocks.map((stock) => stock.price));

  // Return the objects with the highest and lowest prices
  const maxStock = stocks.find((stock) => stock.price === maxPrice);
  const minStock = stocks.find((stock) => stock.price === minPrice);

  return {
    max: maxStock,
    min: minStock,
  };
}

相关问题