言って、私は配列[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]
はへの簡単な方法はありますこれを行う?
言って、私は配列[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]
はへの簡単な方法はありますこれを行う?
それはすでにかなりよさそうです。 x
のコードでは、コードの読みやすさが損なわれ、非構造化が役に立ちます。
Array.prototype.entries()
はmyArray.map((x, idx) => [idx, x])
のショートカットです: `r`呼ば
[...myArray.entries()]
.filter(([, x]) => x > 13)
.map(([idx]) => idx)
多分これはより明確にすることができます。
[11,12,13,14,15,16].reduce((r, c, i) => c > 13 ? r.concat(i) : r, []);
// [3, 4, 5]
私はそれが簡単だかどうかわからないんだけど、あなたは(あなたが好む場合、またはforEachの)削減使用して、1つの関数にそれを行うことができます:
[11,12,13,14,15,16].reduce((a,x,i) => {
if (x > 13) { a.push(i); }
return a;
}, []);
var out = [];
array.forEach((v, idx) => {
if(v > 13){
out.push(idx);
}
})
あなたがマップを使用して値をフィルタできます。
var data = [11, 12, 13, 14, 15, 16],
result = data.map((a, i) => a > 13 && i).filter(a => a !== false);
console.log(result);
です。実際には 'a> 13 && i'は'ここでは偽です。 – CodingIntrigue
いいえ、 'a> 13'ならインデックスを取得します。それ以外の場合は 'false'を返し、それは第2の部分でフィルタリングされます。 –
変数、 'C'と' i'は** **明確ではありません。彼らは短いですが、最初に何を意味するのか分からない人には分かりません。 – CodingIntrigue
rは結果です、cは最新でインデックスはiは – erdysson