如何对一系列值使用 IndexOf

How to use IndexOf for a range of values

var Myarray = [0,4,6,14,50]

var Index = Myarray.indexOf(40-50)

如何在 p5 中写这个,returns 特定范围内所有数字的索引?

我可能犯的错误

  1. 我可能使用了 indexOf,这是错误的命令
  2. 我可能不了解 indexOf 的全部工作原理
  3. 如果没有命令,是否可以使用for循环

注意:40-50 并不意味着来自任何特定语言,它只是为了表明我要表达的意思。

您可以获得所需范围内的索引和过滤器。

const
    array = [0, 4, 6, 14, 50],
    indices = [...array.keys()].filter(i => array[i] >= 40 && array[i] <= 50);

console.log(indices);

尝试这样的事情:

var Myarray = [0, 4, 6, 14, 50]

function getElementsInRange(array, min, max) {
  return array.filter(i => (i - min) * (i - max) <= 0)
}

console.log(getElementsInRange(Myarray, 14, 50))

更新感谢@Nina Scholz。

您可以使用 Array.prototype.map()Array.prototype.filter()

const numbers = [0, 4, 6, 14, 50],
    solution = numbers.map((num, i) => num >= 40 && num <= 50 ? i : -1).filter(val => val !== -1);

console.log(solution);

.

据我了解,以下问题可能是获取范围内项目索引的解决方案。

function indicesOfIntegerRange(numbersArray, num1, num2) {
  if (!numbersArray || !numbersArray.length) {
    return [-1];
  }

  if (!num1) {
    return [numbersArray.indexOf(num2)];
  }

  if (!num2) {
    return [numbersArray.indexOf(num1)];
  }

  const min = Math.min(num1, num2);
  const max = Math.max(num1, num2);

  return numbersArray
    .filter((n) => n >= min && n <= max)
    .map((n) => numbersArray.indexOf(n));
}

用法:

const numbersArray = [0, 4, 6, 14, 50];
console.log(indicesOfIntegerRange()); // [-1]
console.log(indicesOfIntegerRange([])); // [-1]
console.log(indicesOfIntegerRange(numbersArray)); // [-1]
console.log(indicesOfIntegerRange(numbersArray, 40)); // [-1]
console.log(indicesOfIntegerRange(numbersArray, 50)); // [4]
console.log(indicesOfIntegerRange(numbersArray, 40, 50)); // [4]
console.log(indicesOfIntegerRange(numbersArray, 50, 40)); // [4]

希望这会有所帮助。