当它是数组和不是数组时如何映射响应?

How to map an response when It's array and when It's not?

我只是编写了两个简单的函数来验证一个字段是否具有特定值,但在某些情况下,响应可能是一个数组。我可以将这些功能简化为一个功能吗?当响应只是一个对象时,我尝试使用相同的“isOrderInLastMile”函数,但我检索到“object.map 不是函数”错误。

函数1:当响应是一个对象数组时,我使用这个函数。

export function isOrderInLastMile(pieces: any): boolean {
  const totalPieces: number = pieces.length;
  let momentFound: number = 0;

  pieces.map((element) => {
    if (
      element.stagesHistory &&
      getCurrentMoment(element.stagesHistory) ===
        MomentsLabel.En_última_milla_id
    ) {
      momentFound = momentFound + 1;
    }
    return momentFound;
  });

  return totalPieces === momentFound;
}

功能2:当这个响应只是一个对象时我使用这个功能

export function isPieceInLastMile(piece: any): boolean {
  return (
    piece.stagesHistory &&
    getCurrentMoment(piece.stagesHistory) === MomentsLabel.En_última_milla_id
  );
}

如何统一这两个功能?谢谢!!! :)

要么将您的单个元素包装在一个数组中,如下所示:

export function isPieceInLastMile(piece: any): boolean {
  return isOrderInLastMile([piece]);
}

或在回调中使用单个函数

  return pieces.every(isPieceInLastMile);

(可以使用后一个选项,而不是计算所有匹配项)