题目描述(注: leetcode原题传送门):
给定一个排序数组和一个目标值,在数组中找到目标值,并返回其索引。
如果目标值不存在于数组中,返回它将会被按顺序插入的位置。(可以假设数组中无重复元素)
我看评论区很多JS的小伙伴都选择了indexOf()
方法,但我在做这道题目时使用了findIndex()
方法: ,也挺好用:
var searchInsert = function(nums, target) {
//如果目标值在数组内,则返回其索引
let isEqual = (item) => item == target;
let findIndex = nums.findIndex(isEqual);
if(findIndex !== -1) {
return findIndex
} else {
//目标值不在数组内,则判断它的插入位置(题目前提:数组已排好序)
let isBigger = (item) => item > target;
let findInsertIndex = nums.findIndex(isBigger);
if(findInsertIndex === -1){
//如果目标值大于数组内所有元素,插入位置为数组末尾
return nums.length
} else {
return findInsertIndex
}
}
};
关于findIndex()
方法:
返回数组中满足提供的测试函数的第一个元素的索引。否则返回-1。