How can I implement a binary search algorithm in JavaScript?

How can I implement a binary search algorithm in JavaScript? I’m having issues with my return statements, which seem to be returning undefined.

Can anyone help me identify what’s wrong? Specifically, I’m looking for assistance related to binary search JavaScript.

You can view my implementation in this Fiddle: http://jsfiddle.net/2mBdL/.

Make sure your binary search function returns a value when the target element is found. Here’s a simple implementation:

function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
if (arr[mid] === target) {
return mid; // Return the index of the target
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // Return -1 if the target is not found
}

Make sure your function has a return statement that provides a value for cases where the target is not found, like returning -1.

The binary search algorithm assumes that the input array is sorted. If your input array is not sorted, it may lead to unexpected results, including undefined returns. Ensure you sort the array before passing it to the function:

const sortedArray = [1, 2, 3, 4, 5];
const result = binarySearch(sortedArray, 3);
console.log(result); // Should output the index of the element

Add console logs within your binary search function to track the values of left, right, and mid. This can help identify where the function might be returning undefined:

function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
const mid = Math.floor((left + right) / 2);
console.log(`Left: ${left}, Mid: ${mid}, Right: ${right}`); // Debug info
if (arr[mid] === target) {
return mid; // Return the index of the target
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1; // Return -1 if the target is not found
}

By following these suggestions, you should be able to fix any issues related to undefined return statements in your binary search implementation in JavaScript.