我正在尝试使用
array.some
函数遍历一些数据,并在if语句成功时返回我的field
。但我发现实际上返回的是一个布尔值,比如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
,其中包含索引下的字段列表。然后将每个fieldKey
与另一个名为validation
的数据集进行比较。
field
包含一个元素。我希望返回field
,但当我检查invalidField
时,我得到了true
而不是元素。
some
返回一个布尔值,如果为true
,则终止迭代。 - Nina Scholzarray.some
的功能是按设计要求执行的。文档 如果你想要的是查找数组中的元素,也许array.find()
文档 更适合你。 - ste2425field
,这是你从回调函数中想要的元素,但这不是some
返回的内容。根据msn的说明,返回值为:如果回调函数对任何数组元素返回真值,则为true;否则为false。
field
是“真值”,因此some
返回true
。 - Matt Burland