如何在JavaScript数组中查找正元素的索引?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (67)

想返回一个数组的索引数组,该数组在JS中使用纯函数具有正元素。EX:

pos([1,-4,0,5,2])

>>[0,2,3,4]

所以,我尝试过:

  arr.map(function (ele){
   return arr.findIndex(ele => ele > 0);
  })

But my output is :[1,1,1,1]
提问于
用户回答回答于

试试这个:

[1,-4,0,5,2].reduce((acc,value,i) => value >= 0 ? [...acc,i] : acc,[]);

在任何情况下,同时进行过滤和-否则-减少总是最好的选择。

用户回答回答于

如果值为正,则可以首先映射索引,-1然后过滤现有索引的数组

Array#map返回具有元素索引的新数组,或者-1元素是否小于零。

Array#filter返回所有不是的值-1。短的加法只返回一个truthy值,这是一个可能的索引

function pos(array) {
    return array                       // [1, -4, 0, 5, 2]
        .map((v, i) => v < 0 ? -1 : i) // [0, -1, 2, 3, 4]
        .filter(i => i + 1);           // [0,     2, 3, 4]
}

console.log(pos([1, -4, 0, 5, 2]));

映射回调

function pos(arr) {
    return arr.map(function (ele) {
        return arr.findIndex(ele => ele > 0);
    });
}

console.log(pos([1, -4, 0, 5, 2]));

不占用任何元素,因为ele以后从未使用过第一个变量。然后你总是返回第一个元素的索引arr,即1。此值大于零,find返回trueabd 的回调可以找到实际索引

扫码关注云+社区

领取腾讯云代金券