You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JavaScript对象数组中查找值最小的大象对象

问题描述

需要从存储大象信息的对象集合中,查找属性值与minimum变量匹配的项,返回对应的完整目标对象。现有代码已完成大象对象数组的初步构造,在嵌套循环中计算得到了最小质量值minimum,但未实现目标对象的匹配查找逻辑。

现有代码
let numberOfElephants = 6;
let massOfElephants = [2400, 2000, 1200, 2400, 1600, 4000];
let startOrder = [1, 4, 5, 3, 6, 2];
let endOrder = [5, 3, 2, 4, 6, 1];
    
const elephantObject = [];
startOrder.forEach((order, i) => {
  elephantObject.push({ [order]: massOfElephants[i] });
});

for (let i = 0; i < numberOfElephants; i++) {
  for (let j = 0; j < numberOfElephants; j++) {
    const indexOfCorrect = proposedOrder.findIndex(
      (num) => num === endOrder[j]
    );
    const itemAtGivenOrder = startOrder[indexOfCorrect];
            
    const [value] = Object.values(elephantObject[i]);
    const [valueOfStarter] = Object.values(elephantObject[startOrder[i]]);
    const minimum = Math.min(
      elephantAtGivenCorrectIndex[itemAtGivenOrder],
      value
    );
  }
}

代码提示:片段中proposedOrder、elephantAtGivenCorrectIndex未声明定义,直接运行会抛出引用错误,使用前需先完成变量赋值。

实现方案
  • 匹配已计算出的minimum对应对象:在minimum变量定义的位置后,直接用数组find方法遍历elephantObject,对比每个对象的属性值与minimum,命中后即返回完整目标对象
    // 追加在const minimum = ... 代码后
    const targetElephant = elephantObject.find(item => {
      const mass = Object.values(item)[0];
      return mass === minimum;
    });
    
  • 若不需要保留minimum的中间计算逻辑,可直接用reduce一次遍历拿到质量最小的大象对象,减少遍历次数提升性能
    const lightestElephant = elephantObject.reduce((minItem, currentItem) => {
      const minMass = Object.values(minItem)[0];
      const currentMass = Object.values(currentItem)[0];
      return currentMass < minMass ? currentItem : minItem;
    });
    

内容的提问来源于stack exchange,提问作者Kay

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 11:36:29