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

Ember中#each循环内通过索引从另一数组选取对象的实现问题

Ember.js #each循环内通过索引访问第二数组的解决方案

Ember模板不支持直接用[索引]语法访问数组元素,可通过以下两种方案实现需求:

方案1:使用内置get助手(临时场景适用)

直接修改模板代码即可,Ember内置的get助手支持传入数组和索引值返回对应位置的元素,修改后代码如下:

{{#each array1 as |element index|}}
  <Component1 @prop={{element}} @prop2={{get @array2 index}} />
{{/each}}

如果需要处理array2长度短于array1的边界场景,可以加默认值兜底:

{{#each array1 as |element index|}}
  <Component1 @prop={{element}} @prop2={{if (get @array2 index) (get @array2 index) "默认值"}} />
{{/each}}

方案2:JS层预先合并数组(最佳实践推荐)

如果两个数组需要长期配对使用,更推荐在组件/控制器的JS层提前合并为一个对象数组,减少模板层逻辑,也更方便后续维护。
示例JS代码(基于Glimmer组件规范):

import Component from '@glimmer/component';

export default class YourComponent extends Component {
  get pairedArray() {
    return this.args.array1.map((item, index) => ({
      array1Item: item,
      array2Item: this.args.array2?.[index]
    }))
  }
}

对应模板代码可简化为:

{{#each this.pairedArray as |pairedItem|}}
  <Component1 @prop={{pairedItem.array1Item}} @prop2={{pairedItem.array2Item}} />
{{/each}}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 06:36:03