无法将for循环更改为forEach

时间:2019-10-21 07:52:46

标签: javascript foreach

我正在尝试更改此内容:

    <div class="input-group input-group-sm">
  <input class="form-control" name="dp" [(ngModel)]="selectedDate" ngbDatepicker #d="ngbDatepicker" (change)="onDateChange($event.target.value)" (dateSelect)="onDateSelect($event)" [disabled]="isDisabled ? 'disabled' : null">
  <div class="input-group-append">
    <button class="btn btn-input calendar fa fa-calendar" (click)="d.toggle()" type="button" [disabled]="isDisabled ? 'disabled' : null"></button>
  </div>
</div>

对于这样的forEach:

const removeElements = (arr, callback) => {
  for(var i = 0; i < arr.length; i++){
    callback(arr[i], arr);
  }
  return arr;
};

但是它不起作用。你们会帮忙吗?

2 个答案:

答案 0 :(得分:4)

您当前正在调用callback之前立即调用forEach。将函数 reference 传递给forEach

const removeWithForEach = (arr, callback) => {
  arr.forEach((value) => {
    callback(value, arr);
  });
  return arr;
};

(尽管仅使用Array.prototype.forEach代替removeWithForEach更有意义)

答案 1 :(得分:1)

为什么不将callback的签名更改为

const callback = (element, index, array) => { /* code */ };
//                         ^^^^^^ add this parameter

并直接使用calback ind Array#forEach

const removeWithForEach = (arr, callback) => arr.forEach(callback);