说,我有一个数组[11,12,13,14,15,16]
,我希望获得大于13的所有元素索引。
我可以这么做:
myArray.map((x, idx) => [x, idx]).filter(x => x[0] > 13).map(x => x[1])
>>> [3, 4, 5]
有没有更简单的方法呢?
答案 0 :(得分:4)
也许这可以更清楚:
[11,12,13,14,15,16].reduce((r, c, i) => c > 13 ? r.concat(i) : r, []);
// [3, 4, 5]
答案 1 :(得分:1)
您可以使用地图并过滤值。
var data = [11, 12, 13, 14, 15, 16],
result = data.map((a, i) => a > 13 && i).filter(a => a !== false);
console.log(result);

答案 2 :(得分:1)
看起来已经很不错了。 x
使用中的不一致使得代码的可读性降低,这就是解构有用的地方。
Array.prototype.entries()
是myArray.map((x, idx) => [idx, x])
的快捷方式:
[...myArray.entries()]
.filter(([, x]) => x > 13)
.map(([idx]) => idx)
答案 3 :(得分:0)
我不确定它是否更容易,但是您可以在一个函数中使用reduce(或者如果您愿意,可以使用forEach):
[11,12,13,14,15,16].reduce((a,x,i) => {
if (x > 13) { a.push(i); }
return a;
}, []);
答案 4 :(得分:0)
var out = [];
array.forEach((v, idx) => {
if(v > 13){
out.push(idx);
}
})