两个数组合成新的数组案例

这段代码使用了数组的reduce方法来遍历一个数组arr,并根据每个元素首字母进行数据的处理和合并。

具体解释和分析如下:

初始化累加器acc为空对象{}。

遍历数组arr中的每个元素letter。

将当前元素letter转换为大写字母,并将结果赋值给变量capitalized。

在数组arr1中使用filter方法,筛选出首字母与当前元素letter相同的城市信息,并返回一个新数组。

在新数组上使用map方法,将每个城市对象city的name属性提取出来,形成一个新的数组cities。

将新的城市数组cities存储在累加器acc对象中,以大写字母capitalized作为属性名。

返回更新后的累加器对象acc。

通过使用reduce方法,将处理后的城市数据逐步累加到累加器中,并以大写字母作为键,形成了一个对象result。对象result的键是大写字母,值是该字母开头的城市名组成的数组。

这段代码的作用是根据数组arr中的元素首字母,对数组arr1中的城市数据进行筛选和归类,并返回一个以大写字母为键的对象,其中保存了每个大写字母开头的城市名数组。
 <script>
    let arr = ["H", "B", "S", "Q", "T"];
    // 装数据的新数组
    let result = [];

    let arr1 = [
      {
        cityId: 110100,
        name: "杭州",
        pinyin: "hangzhou",
        isHot: 1,
      },
      {
        cityId: 110100,
        name: "四川",
        pinyin: "sichuang",
        isHot: 1,
      },
      {
        cityId: 110100,
        name: "北京",
        pinyin: "beijing",
        isHot: 1,
      },
      {
        cityId: 120100,
        name: "天津",
        pinyin: "tianjin",
        isHot: 0,
      },
      {
        cityId: 130100,
        name: "石家庄",
        pinyin: "shijia",
        isHot: 0,
      },
      {
        cityId: 130200,
        name: "唐山",
        pinyin: "tangshan",
        isHot: 0,
      },
      {
        cityId: 130300,
        name: "秦皇岛",
        pinyin: "qinhuang",
        isHot: 0,
      },
      {
        cityId: 130400,
        name: "邯郸",
        pinyin: "handan",
        isHot: 0,
      },
    ];

    result = arr.reduce((acc, letter) => {
      let capitalized = letter.toUpperCase();
      let cities = arr1
        .filter((city) => city.pinyin[0].toUpperCase() === letter)
        .map((n) => n.name);
      acc[capitalized] = cities;
      return acc;
    }, {});
  </script>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容