【问题标题】:can't loop over array in javascript无法在javascript中循环数组
【发布时间】:2020-01-29 15:46:42
【问题描述】:

嘿,伙计们,我需要知道如何在 javascript 中循环数组,我多次使用 php,我知道如何用 foreach 循环数组,但我不知道如何在 js 中使用它,我正在尝试设置一些选择输入中的选定标签 这是foreach

montant.forEach(element => {
      $('#montant').empty()
           .append('<option value="'+element.id+'">'+element.designation+'</option>')
           .val(''+element.id+'').trigger('change')});

montant 是一个包含具有这些元素的数组的值

const montant = [
  {designation: 120000, id: 11},
  {designation: 30000, id: 12},
  {designation: 40000, id: 13}
]

使用我使用的 foreach,我只得到了第一个元素

【问题讨论】:

  • 您能否包含montant 的实际结构 - 您的示例看起来好像您使用的是对象
  • 当 console.log(montant) 我得到这个数组 (3) […] ​ 0: Object { id: 11, designation: 120000 } ​ 1: Object { id: 12, designation: 30000 } ​ 2: Object { id: 13, designation: 40000 } ​ length: 3
  • 您在循环的每次迭代中都在元素上调用empty(),因此只会显示最终值。删除empty()

标签: javascript jquery arrays tags jquery-select2


【解决方案1】:

如果montant 是一个数组,那么使用forEach 是正确的。但是,对于循环的每次迭代,您都在这样做:

$('#montant').empty().append(...)

因此,对于每个项目,您都在清空 #montant(我假设是 select),所以最后,您的选择只有一个 option,即最后一个。

我认为您必须在循环之前使用empty(),然后在之后使用trigger,这样就不会为数组的每个项目调用事件处理程序:

const $montant = $('#montant');
$montant.empty()
montant.forEach(element => $montant.append(...));
$montant.trigger('change');

现在,您的select 应该已正确填充。

【讨论】:

  • 同样的问题我得到了数组的最后一个元素:/
猜你喜欢
  • 1970-01-01
  • 2015-11-15
  • 1970-01-01
  • 1970-01-01
  • 2016-11-02
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
  • 1970-01-01
相关资源
最近更新 更多