Я пытаюсь использовать функцию array.some
, чтобы перебирать некоторые данные и возвращать мой field
, если инструкция if выполнена успешно.Возвращаем элемент с помощью `array.some()` вместо boolean
То, что я нахожу, происходит вместо этого, это то, что я получаю логическое возвращение, например 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', он завершает итерацию. –
'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
Ваша путаница здесь может заключаться в том, что вы возвращаете 'поле', которое является элементом, который вы хотите от своего обратного вызова, но это не то, 'some' возвращается. Per [msn] (https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Array/some) для возвращаемого значения: 'true, если функция обратного вызова возвращает правдивое значение для любого элемента массива ; в противном случае false. '' field' является «правдивым», поэтому 'some' возвращает' true' –