であれば、私はこのような配列を持って確認してください。 例:Array.everyは()の値がfalse
myArray.every(x => x==false)
//do something
これは正しい方法ですか?または関数を渡す必要がありますか?
であれば、私はこのような配列を持って確認してください。 例:Array.everyは()の値がfalse
myArray.every(x => x==false)
//do something
これは正しい方法ですか?または関数を渡す必要がありますか?
です。 の配列ではなく、のオブジェクトです。
すべての値がfalse
であるかどうかを確認する場合は、Object#keysでキーを取得してから、そのアレイでArray#everyを使用します。
const obj = {firstValue: false, secondValue: false, thirdValue: true, forthValue: false};
const allFalse = Object.keys(obj).every(key => obj[key] === false);
console.log(allFalse);
あなたがES8を使用している場合、あなたはまた、あなたは、配列を持っていないObject#values
const obj = {firstValue: false, secondValue: false, thirdValue: true, forthValue: false};
const allFalse = Object.values(obj).every(value => value === false);
console.log(allFalse);
で作業することができ、あなたがオブジェクトを持っている
が
Object.values(myArray).every(x => x===false)
レガシーブラウザで
ああ、ありがとうございます! –
を使用している場合は注意が、私はどうなるポリフィルが必要になります反復する値の配列を作成するために、Object.valuesを()を使用することができます:
!Object.values(myArray /*?*/).reduce((a,b) => a || b);
残念ながら、 '.every'や' .some'で見られる短絡効果を失います。 –
@rock star [よく、それはまだまだ速い]](http://jsben.ch/Nz2X7) –
うーん...私は懐疑的だ。私がFirefoxでテストを再実行すると、結果は前後に反転します。論理的には、短絡バージョンは速くなければならないが、それは決して保証ではない。とにかく、短いセットでは、それは確かに顕著な違いを作りません。一度大規模に、私は間違いなく早期に停止したいと思います。 –
横をArray#every
を使用する場合は、Array#some
を使用し、Boolean
をコールバックとして使用してlogical NOT !
という値を使用できます。
if (!Object.values(myObject).some(Boolean)) {
//...
}
'.some(b => b)'はより短く、同じ結果を持っているので、組み込みの 'ブール'を使うことは矢関数よりもあまり魅力的にはなりませんでしたが、これは良い方法です。 –
あなたは関数を渡していますが、あなたは '==='を使うことができます。 – elclanrs
あなたの配列は実際には 'Array'ではなく' Object'です。オブジェクトに '.every()'を使うことはできません。 –