TL; DR
Используйте метод Array.filter после Array.map удалить неопределенные элементы в новом массиве.
Расширяя @ ответ Bloomca в:
As stated in the documentation provided here.
Метод map() создает новый массив с результатами вызова предоставленной функции для каждого элемента в этом массиве.
Следовательно, причина, по которой ваш новый массив содержит неопределенные элементы, состоит в том, что вы явно не вызываете возврат внутри функции на некоторые элементы, вызываемые с помощью предоставленной функции. В Javascript, явно не обращаясь к возврату, все равно вернется undefined
.
Например, в следующем методе newArray будет установлен на вошедший результат:
[ undefined, 2, 3 ]
newArray = [1,2,3].map(function(elem) { if (elem > 1) return elem })
console.log(newArray)
Вот почему ответ Приведенный выше больше не будет приводить к undefined
элементов в новом массиве , Условие будет разрешено, если условие res.compareSelected == true
неверно для оператора return в блоке else (обратите внимание, что здесь вы можете просто удалить true
и просто поставить res.compareSelected
, что было бы лучше).
На основе вашего вопроса вы можете найти метод Array.filter
для возврата Array
без неопределенных значений. И только с теми значениями, которые вы назвали функцией data.getTalentProfileInfo(res.RES.RES_ID)
.
Вы можете сделать это следующим образом:
var onCompareSelectedClick = function() {
var arr = appliedResourcesEntries.map(function(res) {
if(res.compareSelected == true) {
return data.getTalentProfileInfo(res.RES.RES_ID);
}
});
var talentProfileInfoForAppliedResources = arr.filter(function(elem) {
return elem;
});
console.log(talentProfileInfoForAppliedResources);
this.openCompareTPDlg(talentProfileInfoForAppliedResources);
}.bind(this);
You can read about the Array.filter method here.
Похоже, что проблема может быть условной в заявлении МПВ, но вы действительно должны получить скрипку, чтобы продемонстрировать эту проблему. – Sudsy
Wow он возвращает undefind когда res.compareSelected = false..i не думаю, что это необходимо подробнее – FreakProgrammer