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

如何从包含颜色与数值的字符串数组中提取各颜色对应最大值条目

实现思路
  • 遍历数组每一项,拆分字符串得到颜色名和对应的数值
  • 用映射表(对象/Map)存储每个颜色当前的最大数值对应条目,遍历过程中如果遇到同颜色的更高数值条目,直接更新映射表对应值
  • 遍历完成后提取映射表的所有value,即可得到目标结果
代码实现

基础版本

const array = ["Black 1", "Black 4", "Green 2", "Green 8", "Green 6", "Green 3", "Yellow 2"]
const maxMap = {}

array.forEach(item => {
  const [color, numStr] = item.split(' ')
  const currentNum = Number(numStr)
  // 映射表无当前颜色 或 当前数值大于已存储的最大数值 则更新
  if (!maxMap[color] || currentNum > Number(maxMap[color].split(' ')[1])) {
    maxMap[color] = item
  }
})

const result = Object.values(maxMap)
// 输出:["Black 4", "Green 8", "Yellow 2"]

优化版本(减少重复拆分字符串,性能更好)

const array = ["Black 1", "Black 4", "Green 2", "Green 8", "Green 6", "Green 3", "Yellow 2"]
const maxMap = {}

array.forEach(item => {
  const [color, numStr] = item.split(' ')
  const currentNum = Number(numStr)
  if (!maxMap[color] || currentNum > maxMap[color].num) {
    maxMap[color] = {
      num: currentNum,
      originItem: item
    }
  }
})

const result = Object.values(maxMap).map(entry => entry.originItem)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 15:54:03