array.some
関数を使用してデータを繰り返し処理しようとしていますが、if文が成功するとfield
が返されます。booleanの代わりに `array.some()`を使用して要素を返します
代わりに、実際の変数(要素の詳細が含まれています)ではなく、true
のように論理値が返されています。
for (var index in allFields) {
const invalidField = allFields[index].some(function (field){
if (!validation.getIn([index,field.dataset.fieldKey,'isValid'])) {
return field;
}
});
if (invalidField) {
return invalidField;
}
}
コードはallFields
を循環し、インデックスの下にあるフィールドのリストを含んでいます。次に、とvalidation
という別のデータセットを比較します。
field
には要素が含まれています。私はfield
を戻したいが、私はinvalidField
をチェックする代わりに、とき、私はあなたがArray.prototype.filter
代わりのArray.prototype.some
を探している要素
'some'はブール値を返し、' true'は繰り返しを終了します。 –
'array.some'は設計どおりに動作しています。 [docs](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some) 'array.find()' [docs](https://developer.mozilla.org)/en/docs/Web/JavaScript/Reference/Global_Objects/Array/find)あなたが望むものより多くなるかもしれない – ste2425
あなたのコールバックから望む要素である 'field'を返すことがあなたの混乱であるかもしれませんが、 'some'が返します。戻り値の場合は[msn](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some): 'コールバック関数が配列要素の真理値を返す場合はtrue ; '' field'は "truthy"なので '' some''が 'true'を返します –