2017-06-27 14 views
0

挿入機能を実行する前に、自分の検証関数がエラーを返したかどうかを確認しようとしています。配列のオブジェクトを返すので、私のエラーが空であるかどうかを調べる方法を理解することができません。私はここで非常に明白な何かを見逃していると確信していますが、私は困惑しています。配列のオブジェクトにエラーが含まれていないか確認してください。

const formErrors = this.state.careerHistoryPositions.map((careerHistoryPosition) => { 
    errors = careerHistoryPosition.errors 

    if (!errors) { 
    return false; 
    } 
}); 

if (formErrors === false) { 
    console.log("Run insert function"); 
} 
+1

'のconstはFormErrors = this.state.careerHistoryPositions.some(位置=> position.errors)を使用する必要があります' – Li357

+1

はもしかして*配列オブジェクトの*? –

+0

[* map *](http://www.ecma-international.org/ecma-262/7.0/index.html#sec-array.prototype.map)は、(おそらく空の)配列を返すので、* formErrors *は常にtrueになり、 'formErrors === false'は常にfalseになります(これは、配列をブール値と比較しているためです)。代わりに[* some *](http://www.ecma-international.org/ecma-262/7.0/index.html#sec-array.prototype.some)を使用することを検討してください。 – RobG

答えて

0

私はあなたはそれがプロパティのエラーが含まれているかどうかを確認するためにcareerHistoryPositions内の各オブジェクトをチェックしたいと仮定していますし、それは少なくとも一つのアイテムを持つ配列であること。その場合、あなたはおそらくArray.filter代わり

const careerHistoryPositions = [{}, {}, {errors: ['system error']}] 
 

 
// check if it has property 'errors' and that it has length > 0 
 
const errors = careerHistoryPositions.filter((pos) => pos.hasOwnProperty('errors') && pos.errors.length > 0); 
 

 
// if at least one error is found 
 
if (errors.length > 0) { 
 
    console.log("Run insert function"); 
 
}

関連する問題