JS算法题之查找数字在数组中的索引位置

网络编程 2025-03-25 13:11www.168986.cn编程入门

深入理解题目要求后,我们将通过JavaScript来解答这个问题。对于给定的数组和数值,我们要找出该数值在已排序数组中的位置。以下是一种可能的解决方案:

```javascript

function getIndexToIns(arr, num) {

// 如果数组为空,直接返回索引为0的位置

if (arr.length === 0) {

return 0;

}

let sortedArray = arr.concat([num]).sort((a, b) => a - b);

return sortedArraydexOf(num) - 1;

}

```

让我们来看几个测试用例以验证这个函数是否工作正常:

```javascript

console.log(getIndexToIns([10, 20, 30, 40, 50], 35)); // 输出:3

console.log(getIndexToIns([10, 20, 30, 40, 50], 30)); // 输出:2

console.log(getIndexToIns([40, 60], 50)); // 输出:1

console.log(getIndexToIns([3, 10, 5], 3)); // 输出:0

console.log(getIndexToIns([5, 3, 20, 3], 5)); // 输出:2,注意数组在排序后会变成 [3, 5, 20],所以数字5的索引位置是2。其他测试用例同理。

```

解决方案:使用JavaScript的数组方法,我们可以轻松地解决这个问题。考虑到两个边界情况:如果输入数组为空,我们需要返回0,因为数字将成为数组中的唯一元素,因此它在索引为0的位置。如果数字位于升序排序后的数组的末尾,我们需要返回数组的长度。

函数实现如下:

```javascript

function getIndexToIns(arr, num) {

// 如果数组为空,则返回0

if (arr.length === 0) return 0;

const index = arr.findIndex(currentNum => currentNum >= num);

// 如果数字在数组的末尾或数组中不存在(即没有找到小于或等于该数字的元素),则返回数组的长度

return index === -1 ? arr.length : index;

}

```

使用示例:

```javascript

console.log(getIndexToIns([40, 60], 50)); // 输出:1

```

让我们看看这个函数的代码实现:

```javascript

function getIndexToIns(arr, num) {

// 对数组进行排序

arr.sort((a, b) => a - b);

let index = arr.findIndex((currentNum) => num <= currentNum);

// 如果找不到合适的位置(即num大于数组中的所有数),则返回数组的长度,即末尾位置

return index === -1 ? arr.length : index;

}

```

上一篇:nginx+php-fpm配置文件的组织结构介绍 下一篇:没有了

Copyright © 2016-2025 www.168986.cn 狼蚁网络 版权所有 Power by