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

如何根据name属性提取数组内对象对应的weight、percentages字段值

按name筛选数组对象对应字段的实现方法

你可以直接用JS数组原生的find()方法实现需求,该方法会遍历数组,返回第一个满足匹配条件的元素,找不到则返回undefined,刚好适配你按唯一name匹配的场景。

实现示例

// 你的state数组(注意原示例里的字符串类型name要加引号,避免语法错误)
const stateArr = [
  {
    name: 'bench',
    weight: 200,
    percentages: [200, 180, 160]
  },
  {
    name: 'squat',
    weight: 300,
    percentages: [300, 270, 240]
  }
]

// 封装为复用函数,传入要匹配的name即可
function getFieldByName(targetName) {
  const matchedItem = stateArr.find(item => item.name === targetName)
  // 兼容name不存在的场景,避免读取字段时报错
  if (!matchedItem) return null
  // 按需返回需要的字段
  return {
    weight: matchedItem.weight,
    percentages: matchedItem.percentages
  }
}

// 测试调用
console.log(getFieldByName('bench')) 
// 输出结果:{ weight: 200, percentages: [200, 180, 160] }

注意事项

  • 如果你的业务场景中可能存在多个相同name的对象,可以把find()替换为filter(),返回的是所有符合条件的对象组成的数组,再遍历提取对应字段即可
  • 读取匹配结果的字段前一定要做非空判断,避免传入不存在的name时触发Cannot read properties of undefined类报错
  • 如果是React/Vue等框架的响应式state数组,直接对state中的数组调用find()方法即可,逻辑和上述示例完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 05:30:02