Return 使用“array.some()”而不是布尔值的元素
Return an element using `array.some()` instead of boolean
我正在尝试使用 array.some
函数遍历一些数据和 return 我的 field
如果 if 语句成功。
我发现的是,我得到的是布尔值 return 例如 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
包含一个元素。我希望 return field
但是当我检查 invalidField
我得到 true
而不是元素
您正在寻找 Array.prototype.filter
instead of Array.prototype.some
。
Filter 执行您目前期望 some()
执行的操作。 some()
returns 如果 1 个或多个元素符合您的条件,则返回一个布尔值,而 filter()
创建一个新的元素数组,满足您的条件。
获取元素需要使用array.filter()
for (var index in allFields) {
const invalidField = allFields[index].filter(function (field){
if (!validation.getIn([index,field.dataset.fieldKey,'isValid'])) {
return field;
}
});
if (invalidField.length > 0) { //check if returned anything
return invalidField[0];
}
}
如果你只想return第一个,你可以使用array.find()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
Array.prototype.some()
仅检查数组中的任何元素是否通过回调函数中定义的测试。您应该使用数组 find
方法,其中 returns 第一个元素 passig test
我正在尝试使用 array.some
函数遍历一些数据和 return 我的 field
如果 if 语句成功。
我发现的是,我得到的是布尔值 return 例如 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
包含一个元素。我希望 return field
但是当我检查 invalidField
我得到 true
而不是元素
您正在寻找 Array.prototype.filter
instead of Array.prototype.some
。
Filter 执行您目前期望 some()
执行的操作。 some()
returns 如果 1 个或多个元素符合您的条件,则返回一个布尔值,而 filter()
创建一个新的元素数组,满足您的条件。
获取元素需要使用array.filter()
for (var index in allFields) {
const invalidField = allFields[index].filter(function (field){
if (!validation.getIn([index,field.dataset.fieldKey,'isValid'])) {
return field;
}
});
if (invalidField.length > 0) { //check if returned anything
return invalidField[0];
}
}
如果你只想return第一个,你可以使用array.find()
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find
Array.prototype.some()
仅检查数组中的任何元素是否通过回调函数中定义的测试。您应该使用数组 find
方法,其中 returns 第一个元素 passig test