返回满足约束条件的数组下标

417 阅读2分钟

在JavaScript中,你可以通过多种方式实现返回满足约束条件的数组元素的下标值。 以下是一些常用的方法:

1. 使用 findIndex 方法

findIndex 方法返回数组中满足提供的测试函数的第一个元素的索引。如果没有找到符合条件的元素,则返回 -1

const array = [5, 12, 8, 130, 44];

const index = array.findIndex(element => element > 10);

console.log(index); // 输出 1

2. 使用 for 循环

你也可以使用一个简单的 for 循环来遍历数组,并在满足条件时返回当前索引。

const array = [5, 12, 8, 130, 44];
let index = -1;

for (let i = 0; i < array.length; i++) {
    if (array[i] > 10) {
        index = i;
        break;
    }
}

console.log(index); // 输出 1

3. 使用 map 方法和 filter 方法组合

这种方法适用于返回所有满足条件的元素的下标。

const array = [5, 12, 8, 130, 44];

const indices = array
    .map((element, index) => element > 10 ? index : -1)
    .filter(index => index !== -1);

console.log(indices); // 输出 [1, 3, 4]

4. 使用 reduce 方法

reduce 方法可以让你在一次遍历中收集所有满足条件的下标值。

const array = [5, 12, 8, 130, 44];

const indices = array.reduce((acc, element, index) => {
    if (element > 10) {
        acc.push(index);
    }
    return acc;
}, []);

console.log(indices); // 输出 [1, 3, 4]

5. 使用 forEach 方法

forEach 方法遍历整个数组,并在满足条件时将下标值添加到一个数组中。

const array = [5, 12, 8, 130, 44];
const indices = [];

array.forEach((element, index) => {
    if (element > 10) {
        indices.push(index);
    }
});

console.log(indices); // 输出 [1, 3, 4]

通过上述所有方法可以发现,上述方法均为实现数组内满足约束条件返回元素下标的方法,针对操作的是单个数组元素是否满足约束条件,从而返回数组下标。在上述的方法中还可以进行细分,返回第一个查找到满足约束条件的元素(findIndex,for循环),以及返回所有满足约束条件的元素(map+filter,reduce,forEach)。