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

不使用Object方法访问对象:`stocks[item[0]].inventory`逻辑解析

理解stocks[item[0]].inventory的工作逻辑

一、[item[0]]定位对象属性的核心原理

JavaScript里访问对象属性有两种方式:点符号(.)和方括号符号([]),这里用的是后者,核心逻辑是动态通过字符串键名获取属性值:

  • 先看item[0]:在fruits.items.every()的遍历里,item是fruits.items里的每个子数组(比如第一个是['Mangoes', 50]),item[0]就是子数组的第一个元素,也就是字符串类型的水果名称('Mangoes'或'Apples')。
  • 方括号的作用:把item[0]的字符串值当作对象的属性名,直接从stocks里取出对应的属性值。比如当item[0]是'Mangoes'时,stocks[item[0]]就等价于stocks.Mangoes;如果属性名带空格(比如'Star Apple'),点符号没法用,方括号却能直接处理stocks['Star Apple'],这也是方括号的优势。

二、代码的完整执行逻辑

把stocks[item[0]].inventory拆成三步看:

  1. 遍历取数:fruits.items.every()逐个处理数组里的子元素,第一次循环item是['Mangoes', 50],第二次是['Apples', 30]。
  2. 定位属性:item[0]拿到水果名称字符串,用stocks[item[0]]从stocks对象中取出对应的数据——第一次取到{inventory: 300, cost: 2.00},第二次取到100(注意这里stocks.Apples是直接存的数字,不是对象,所以运行时stocks['Apples'].inventory会报错,因为数字没有inventory属性)。
  3. 提取子属性:.inventory是从前面拿到的对象中取出库存数值,再和item[1](要取用的数量,比如50、30)做大小比较。

三、和Object.entries/keys/values的区别

你提到的这些方法是用来遍历对象的全部键/值/键值对,比如Object.entries(stocks)会把stocks转成[['Mangoes', {...}], ['Apples', 100], ...]的数组,你可以遍历这个数组找到对应键的值,但stocks[item[0]]是直接通过已知键名定位单个属性,不需要遍历整个对象,效率更高,是动态获取单个属性的直接方式。

四、谷歌搜索关键词

  • JavaScript 对象方括号属性访问
  • JavaScript dynamic object property access
  • JavaScript 方括号 vs 点符号访问属性
  • JavaScript 对象属性动态获取

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 03:15:43