JavaScript的函数是否可以使用array.forEach向调用者返回一个值?

时间:2017-04-26 07:37:59

标签: javascript ecmascript-6

例如:

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

事实证明return i;不会返回函数findIndexOfFirstNonNegative()的调用者,但它将从胖箭头函数返回并让forEach继续(或者即使它是一个普通的老函数,而不是胖箭头函数,它是一样的。)

有没有办法突破并返回来电者?

2 个答案:

答案 0 :(得分:3)

您可以在Javascript中使用findIndex

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

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

答案 1 :(得分:1)

使用经典循环。当条件满足时,这将返回到该功能。

我在循环中添加了一个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]))
&#13;
&#13;
&#13;

OR

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

&#13;
&#13;
function findIndexOfFirstNonNegative(array) {
  return array.findIndex(a=>a>=0);
}

console.log("Index found : " + findIndexOfFirstNonNegative([-5, 2, 1]))
&#13;
&#13;
&#13;