JavaScript 的函数可以有一个 array.forEach 向调用者返回一个值吗?



例如:

  function findIndexOfFirstNonNegative(array) {
    array.forEach( (a, i) => { if (a >= 0) { return i; }});
    return null;
  }

事实证明,return i;不会返回到函数findIndexOfFirstNonNegative()的呼叫者,但它将从fat Arrow函数返回,然后让forEach继续进行(或即使它是普通的旧函数,而不是fat Arrow函数,是一样的(。

有没有办法突破并返回呼叫者?

您可以在JavaScript中使用FindIndex

array.findIndex( a => a >= 0);

console.log([-5,-10, 0, 4].findIndex( a => a >= 0))

使用经典循环。满足条件时,这将返回函数。

我在循环中添加了一个 console.log(),以表明它在建立非负数

后将停止

function findIndexOfFirstNonNegative(array) {
  for (let i = 0, l = array.length; i < l; i++) {
    console.log("Loop item : " + array[i] + " at index " + i);
    if (array[i] >= 0) return i;
  }
  return -1;
}
console.log("Index found : " + findIndexOfFirstNonNegative([-5, 2, 1]))

您可以直接使用Array#findIndex()

function findIndexOfFirstNonNegative(array) {
  return array.findIndex(a=>a>=0);
}
console.log("Index found : " + findIndexOfFirstNonNegative([-5, 2, 1]))

最新更新