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

JavaScript中如何获取数组内指定命名对象的索引?

问题分析与解决方案

你遇到的问题核心是误解了数据结构:你写的manifest.coffee.beans用了数组的方括号[],但里面却是键值对形式,这在JavaScript里是语法错误的——数组只能存放有序的元素,不能用key: value的格式。实际上你的beans应该是一个对象(用大括号{}包裹),这也是为什么indexOf()完全不起作用的原因:indexOf()是数组的方法,对象根本没有这个方法。

正确的做法分两种情况:


1. 如果你只是想获取"CB_2020_0005"对应的对象(不需要索引)

直接通过对象的键访问即可,这也是最直接高效的方式:

const targetBean = manifest.coffee.beans["CB_2020_0005"];
// 此时targetBean就是 { price: 3.3, amount: 10 }

2. 如果你确实需要获取该键在对象键列表中的“索引”

对象本身是无序的(ES6+虽然会保留插入顺序,但本质上不是数组那样的有序结构),但你可以先把对象的键转换成数组,再用indexOf():

// 第一步:获取beans对象的所有键,组成一个数组
const beanKeys = Object.keys(manifest.coffee.beans);
// 第二步:在键数组中查找目标键的索引
const idx = beanKeys.indexOf("CB_2020_0005");
// 此时idx的值是1,对应第二个键的位置

最后修正你的数据结构

先把beans的数组方括号[]改成对象的大括号{},否则代码会报错:

const manifest = {
  userData: {},
  coffee: {
    beans: {  // 这里改成大括号
      "CB_2020_0001": { price: 2.5, amount: 5 },
      "CB_2020_0005": { price: 3.3, amount: 10 }
    },
    instant: []
  }
};

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.06 20:12:29