Javascript 当尝试Console.log一个函数的结果时,我没有定义
假设数组已排序,我将尝试查找要插入的数字的最低索引 当我在If语句中将结果记录到控制台时,它看起来是正确的 但是,当我尝试将函数记录到控制台时,我得到了未定义的结果 我曾尝试将函数声明为一个var,结果类似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
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这是一个好的观点,但我认为这并不重要,因为数组是从最小到最大排序的,所以它永远不会再次成为现实。“假设数组已排序”