Как написать оператор if в выражении функции стрелки? - PullRequest
1 голос
/ 27 мая 2019

Я не получаю ожидаемого результата в приведенном ниже коде, просто хотел узнать, правильно ли он добавлять условие в синтаксис функции стрелки, используя выражение.

const drugPriceErrors = [99, 85];

Case#1 
const messages = [{
  settlementCode: "99",
  settlementDesc: "test:test"
}]

Case#2 
const messages = [{
  settlementCode: "77",
  settlementDesc: "test"
}
];

Case#3 

const messages = [{
  settlementCode: "66",
  settlementDesc: "test:test"
}]


function validateEntries(messages) {
  if (!messages) {
    return []
  };

  let filteredMsg = messages.filter((item) => {
    if (!drugPriceErrors.includes(item.settlementCode)) {
      item.settlementDesc.includes(":")
    } else {
      return;
    }
  });

  return filteredMsg;
};

console.log(validateEntries(messages));

ожидаемый результат

Case#1 output should be 
    [{
      settlementCode: "99",
      settlementDesc: "test:test"
    }]

Case#2 output should be 

[]

Case#3 output 

[{
      settlementCode: "66",
      settlementDesc: "test:test"
    }]

1 Ответ

2 голосов
/ 27 мая 2019

Насколько я понимаю, вы хотите фильтровать те объекты, которые соответствуют следующим критериям

  • SettlementCode не должно существовать в drugPriceErrors массиве ИЛИ
  • SettlementDesc должен содержать :

Вы можете исправить свой код следующим образом

  • Во-первых, поскольку drugPriceErrors является массивом чисел, преобразуйте settlementCode для нумерации с использованием +settlementCode
  • Если условие оценено как истинное, то есть settlementCode существует в drugPriceErrors, вернуть true
  • В противном случае вернуть, если settlementDesc содержит :

const drugPriceErrors = [99,85];
const messages = [ {settlementCode:"99", settlementDesc: "test:test" }, {settlementCode:"66", settlementDesc: "test:test" },{settlementCode: "77",settlementDesc: "test"}];

function validateEntries(messages) {
  if (!messages) {
    return []
  };

  let filteredMsg = messages.filter((item) => {
    if (drugPriceErrors.includes(+item.settlementCode)) return true;
    else return item.settlementDesc.includes(":");
  });

  return filteredMsg;
};

console.log(validateEntries(messages));

Кроме того, вы также можете упростить свой код следующим образом

const drugPriceErrors = [99,85];
const messages = [ {settlementCode:"99", settlementDesc: "test:test" }, {settlementCode:"66", settlementDesc: "test:test" },{settlementCode: "77",settlementDesc: "test"}];   
    
 const result = messages.filter(v => drugPriceErrors.includes(+v.settlementCode) || v.settlementDesc.includes(":"));
 console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...