Мне интересно, почему мое решение не работает. У меня есть следующие:Если инструкция, которая проверяет несколько тернарных операторов Javascript
//tells if type should be included in the row data
isInReport = {factual: true, eac: false, variance: false}
//report has hundreds of objects, each with a type of either Plan, Factual, EAC, Variance
report = [{type: "Plan"}, {type: "Factual"}, {type: "EAC"}, {type: "Variance"}];
мне нужно перебрать массив отчетов и сделать что-то всегда, если item.type это «план», или, если это один из других 3-х типов, но только если это true в объекте isInReport. Поэтому в моем примере оператор if должен пройти, если item.type является «Plan» или «Factual»
Почему этот код не работает? Логика кажется мне правдой, даже немного странной. Когда я тестировал, он всегда возвращает все типы независимо от того, что. Спасибо за любую помощь!
report.map(function (item) {
if (
item.type === "Plan" ||
item.type === (isInReport.factual) ? "Factual" : "Plan" ||
item.type === (isInReport.eac) ? "EAC" : "Plan" ||
item.type === (isInReport.variance) ? "Variance" : "Plan"
) {
//do stuff
}
});
Возможно, вам нужен 'report.filter 'вместо или в дополнение? – apokryfos
Вы можете перепроверить, если строка 'report = [{type:" Plan "} {type:" Factual "} {type:" EAC "} {type:" Variance "}];' is correct? Множество запятых, кажется, отсутствует, например: 'report = [{type:" Plan "}, {type:" Factual "}, {type:" EAC "}, {type:" Variance "}];' Кроме того, можете ли вы подтвердить, что 'item.type ===" Plan "' selding true, [больше не требуется никаких проверок, поскольку утверждение уже истинно-ish] (https://developer.mozilla.org/en/docs/Glossary/Truthy) – Bonatti
Не знаете, каков ваш вопрос здесь, так или иначе, даже этот код работает, если вы можете его изменить, должно быть хорошо изменить его в форме, которая очень читаема. Вам не нужен тройной оператор внутри условия * if *! –