在JavaScript中,我有以下数组
var arr = [5, 10, 2, 7];
从那个数组中,我想得到一个只包含小于10项的索引的数组。因此,在上面的例子中,索引数组将是
var indexes = [0, 2, 3];
现在,我想要一些类似于filter
的东西,但这会返回索引。
如果我尝试filter
,这就是它的工作原理
var newArr = arr.filter(function (d) {
return (d < 10);
});
// newArr will be: [5, 2, 7];
这不是我想要的。我想要以下几行(注意这是一个伪代码)
var indexes = arr.filter(function (d) {
/* SOMETHING ALONG THE FOLLOWING PSEUDOCODE */
/* return Index of filter (d < 10); */
});
// indexes will be: [0, 2, 3];
我该怎么做?感谢。
答案 0 :(得分:5)
使用减速器。
var arr = [5, 10, 2, 7];
var newArr = arr.reduce(function(acc, curr, index) {
if (curr < 10) {
acc.push(index);
}
return acc;
}, []);
console.log(newArr);
答案 1 :(得分:2)
您只需使用forEach
循环:
const arr = [5, 10, 2, 7];
const customFilter = (arr, min) => {
const result = [];
arr.forEach((element, index) => {
if (element < min) {
result.push(index);
}
});
return result;
}
console.log(customFilter(arr, 10));
答案 2 :(得分:2)
您可以使用array#reduce
并添加值大于10的索引。
var arr = [5, 10, 2, 7];
var indexes = arr.reduce((r, d, i) => d < 10 ? (r.push(i), r) : r , []);
console.log(indexes);
&#13;