let arr = [0, 0, 0, 0, 1, 2, 3, 0, 4, 5, 6, 0];
- 找到数组中第1个不为0的数
// 使用 find方法实现
const firstNonZero1 = arr.find((num) => num !== 0);
//使用 reduceRight方法实现
const firstNonZero2 = arr.reduceRight((acc, cur) => (cur === 0 ? acc : cur), 0);
- 找到数组中最后1个不为0的数
//使用 reduce方法实现
const lastNonZero1 = arr.reduce((acc, cur) => (cur === 0 ? acc : cur), 0);
const lastNonZero2 = arr.reduceRight(
(acc, cur) => (acc === 0 && cur !== 0 ? cur : acc),
0
);
3. 找到第1不为0&最后不为0数字的下标
//找到第1个不为0数字的下标
console.log("===找到第1个不为0数字的下标===");
console.log(arr.findIndex((item) => item != 0));
//找到最后1个不为0数字的下标
console.log("===找到最后1个不为0数字的下标===");
console.log(arr.length - 1 - arr.reverse().findIndex((item) => item != 0));
4.找到数组中不为0数字的数量
console.log(
arr.reduce((pre, cur) => {
if (cur) pre++;
return pre;
}, 0)
);
- 找到数组中最大的数字的下标
const maxIndex = count.reduce(
(maxIndex, value, index, array) =>
value > array[maxIndex] ? index : maxIndex,
0
);