如何对一系列值使用 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 特定范围内所有数字的索引?
我可能犯的错误
- 我可能使用了 indexOf,这是错误的命令
- 我可能不了解 indexOf 的全部工作原理
- 如果没有命令,是否可以使用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]
希望这会有所帮助。
var Myarray = [0,4,6,14,50]
var Index = Myarray.indexOf(40-50)
如何在 p5 中写这个,returns 特定范围内所有数字的索引?
我可能犯的错误
- 我可能使用了 indexOf,这是错误的命令
- 我可能不了解 indexOf 的全部工作原理
- 如果没有命令,是否可以使用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]
希望这会有所帮助。