如何使用带有两个值的find()

时间:2019-08-02 15:49:13

标签: javascript

我想实现一个函数来返回带数字的巴黎和带数字的里昂,因为我不想拥有邮政编码。 但是我有一个问题,对于里昂它无法正常工作。只有回巴黎。我认为我的错误就在线上

(ci) => ci.postalCode === 75000 || 69000);

但是我不知道如何找到解决方案 如果有人可以解释我,那就很好

谢谢

  public static CITIES_INFO = [
    { postalCode: 75000, baseName: "Paris" },
    { postalCode: 69000, baseName: "Lyon" },
    { postalCode: 33000, baseName: "bordeaux" },
    { postalCode: 44000, baseName: "nantes" },
    { postalCode: 38000, baseName: "grenoble" },
    { postalCode: 74000, baseName: "annecy" },
    { postalCode: 13000, baseName: "marseille" },
    { postalCode: 78000, baseName: "versailles" },
    { postalCode: 92081, baseName: "La Défense" },
    { postalCode: 92100, baseName: "boulogne" },
  ];

  public static convertPostalCodeToCityName(postalCode: number) {
    let cityInfo = CityUtils.CITIES_INFO.find((ci) => ci.postalCode === postalCode);
    if (cityInfo) {
      return cityInfo.baseName.charAt(0).toUpperCase() + cityInfo.baseName.slice(1);
    }

    if (postalCode > 75000 && postalCode < 76000 || (postalCode > 69000 && postalCode < 70000)) {
      cityInfo = CityUtils.CITIES_INFO.find(
        (ci) => ci.postalCode === 75000 || 69000);
      if (cityInfo) {
        const cityName = cityInfo.baseName.charAt(0).toUpperCase() + cityInfo.baseName.slice(1);
        return `${cityName} ${parseInt(postalCode.toString().slice(-2), 10)}`;
      }
    }

2 个答案:

答案 0 :(得分:3)

您需要分别比较两个值。

(ci) => ci.postalCode === 75000 || ci.postalCode === 69000);

或者更好的方法是创建一个数组,然后使用includes()

(ci) => [7500, 69000].includes(ci.postalCode));

答案 1 :(得分:0)

const city = postalCode => CITIES_INFO.filter(code => code === postalCode).length !== 0 ? CITIES_INFO.find(code => code === postalCode)[0].baseName : null;
const baseName = city(75000)

尝试此操作,它应该返回baseName