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

JavaScript创建儿童玩具商城玩具数组的代码错误排查

你的代码里有几个关键问题,我帮你拆解并修正:

首先,咱们先看你写的代码里的错误点:

1. 数组初始化的语法错误

你在定义cars和tractors对应的数组时,用了0 : ['name', ...]这种写法——这是对象的键值对语法,但数组是有序的集合,不需要显式声明索引,直接把元素依次放进数组里就行,JS会自动给它们分配从0开始的索引。

2. 嵌套结构的访问方式错误

  • toys是一个包含两个对象的数组,第一个对象才是包含cars属性的那个,所以你不能直接写toys[cars],得先通过索引[0]拿到第一个对象,再访问它的cars属性(用toys[0].cars或者toys[0]['cars']都可以)。
  • 另外,你写的[name]会被JS当成一个变量,但你并没有定义name这个变量,所以会报错。如果保持你原来的数组结构(每个玩具是一个数组),要取第一个玩具的name,得用索引[0](因为name是数组的第一个元素);如果改成对象结构,用.name会更直观。

修正后的代码(保持你原来的数组结构)

// 去掉数组里多余的索引声明,直接放元素
var toys = [
  {
    'cars': [
      ['赛车', '遥控', '红色', 'car_red.jpg'],
      ['卡车', '惯性', '蓝色', 'car_blue.jpg'],
      ['跑车', '合金', '黄色', 'car_yellow.jpg']
    ]
  },
  {
    'tractors': [
      ['农用拖拉机', '惯性', '绿色', 'tractor_green.jpg'],
      ['工程拖拉机', '遥控', '橙色', 'tractor_orange.jpg'],
      ['迷你拖拉机', '合金', '黑色', 'tractor_black.jpg']
    ]
  }
];

// 正确访问第一个cars玩具的name
document.write(toys[0].cars[0][0]);

更推荐的结构(把每个玩具做成对象,可读性更高)

如果你想让代码更清晰、后续维护更方便,建议把每个玩具定义成带属性的对象,这样访问的时候不用记索引,直接用属性名就行:

var toys = [
  {
    category: 'cars',
    items: [
      {name: '赛车', type: '遥控', color: '红色', image: 'car_red.jpg'},
      {name: '卡车', type: '惯性', color: '蓝色', image: 'car_blue.jpg'},
      {name: '跑车', type: '合金', color: '黄色', image: 'car_yellow.jpg'}
    ]
  },
  {
    category: 'tractors',
    items: [
      {name: '农用拖拉机', type: '惯性', color: '绿色', image: 'tractor_green.jpg'},
      {name: '工程拖拉机', type: '遥控', color: '橙色', image: 'tractor_orange.jpg'},
      {name: '迷你拖拉机', type: '合金', color: '黑色', image: 'tractor_black.jpg'}
    ]
  }
];

// 访问第一个cars玩具的name,是不是直观多了?
document.write(toys[0].items[0].name);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:33:56