Javascript 当尝试Console.log一个函数的结果时,我没有定义

Javascript 当尝试Console.log一个函数的结果时,我没有定义,javascript,node.js,Javascript,Node.js,假设数组已排序,我将尝试查找要插入的数字的最低索引 当我在If语句中将结果记录到控制台时,它看起来是正确的 但是,当我尝试将函数记录到控制台时,我得到了未定义的结果 我曾尝试将函数声明为一个var,结果类似 function lowestIndexInsert(num, arrayofIntegers) { arrayofIntegers.forEach(function(element) { if(num >= element) { // console.log(arra

假设数组已排序,我将尝试查找要插入的数字的最低索引

当我在If语句中将结果记录到控制台时,它看起来是正确的

但是,当我尝试将函数记录到控制台时,我得到了未定义的结果

我曾尝试将函数声明为一个var,结果类似

function lowestIndexInsert(num, arrayofIntegers) {
  arrayofIntegers.forEach(function(element) {
  if(num >= element) {
    // console.log(arrayofIntegers.indexOf(element) + 1)
  return (arrayofIntegers.indexOf(element) + 1);

    }
  });
}
var testarray = [1, 3, 5, 6, 7, 11, 13, 50]

console.log(lowestIndexInsert(35, testarray))
这将向控制台显示数字7,而不是我未定义。

lowestIndexInsert()
没有返回任何内容,您的
返回值
forEach
循环中

因此,
未定义
。试着这样做:

函数lowestIndexInsert(num,ArrayFintegers){
var-idx=0;
ArrayFintegers.forEach(函数(元素){
if(num>=元素){
idx=ArrayFinTegers.indexOf(元素)+1
}
});
返回idx;
}
var testarray=[1,3,5,6,7,11,13,50]

log(lowestIndexInsert(35,testarray))
或者更确切地说,不要使用
forEach
。这基本上是正确的,但我认为会找到满足条件
num>=element
的最后一个索引(因为它将继续运行,并用以后的匹配覆盖
idx
)虽然OP似乎打算在第一个元素之后停止。@apsillers这是一个好的观点,但我认为这并不重要,因为数组是从最小到最大排序的,所以它永远不会再次成为现实。“假设数组已排序”