如何拿到数组最后一个不为0的数的索引?JS数组方法总结备忘

229 阅读1分钟

let arr = [0, 0, 0, 0, 1, 2, 3, 0, 4, 5, 6, 0];

  1. 找到数组中第1个不为0的数
// 使用 find方法实现
const firstNonZero1 = arr.find((num) => num !== 0);
//使用 reduceRight方法实现
const firstNonZero2 = arr.reduceRight((acc, cur) => (cur === 0 ? acc : cur), 0);
  1. 找到数组中最后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)
);
  1. 找到数组中最大的数字的下标
const maxIndex = count.reduce(
    (maxIndex, value, index, array) =>
      value > array[maxIndex] ? index : maxIndex,
    0
  );