使用.findIndex将满足条件的其他数组元素的所有索引保存到新数组中

时间:2018-12-25 14:59:12

标签: javascript arrays array.prototype.map

const jumbledNums = [123, 7, 25, 78, 5, 9]; 

const lessThanTen = jumbledNums.findIndex(num => {
  return num < 10;
});

嗨, 我的问题是,此代码段仅返回元素满足条件num < 10的首次满足索引,但是我想将满足条件的所有索引保存到新数组中。根据我在.findIndex()的Mozilla文档中阅读的内容,在找到满足条件的元素后,它不会检查其他元素。有什么方法可以对数组中的每个元素重复.findIndex(例如,使用.map())还是我需要使用另一种方法来做到这一点?

3 个答案:

答案 0 :(得分:1)

使用Array#reduce()

const jumbledNums = [123, 7, 25, 78, 5, 9];

const lessThanTen = jumbledNums.reduce((a, c, i) => (c < 10 ? a.concat(i) : a), [])

console.log(lessThanTen)

答案 1 :(得分:0)

如果小于十,则可以先映射索引,或者P(75)=F,然后对索引数组进行过滤以查找有效索引。

n=25

答案 2 :(得分:0)

您可以使用array.filter,它将返回一个新数组,该数组将检查条件。获取值

但是array.filter不返回索引,因此您可以使用array.map,这将创建一个新数组,并且可以使用array.filter删除未定义的大小写。

我希望这能解决问题。

const jumbledNums = [123, 7, 25, 78, 5, 9]; 

const lessThan10 = jumbledNums.filter(o => o<10)

console.log("array with less than 10", lessThan10)

const lessThan10Indexes = jumbledNums.map((o,i) =>{ 
  return o < 10 ? i : undefined
}).filter(o => o)

console.log("array with less than 10 Indexes", lessThan10Indexes)