【问题标题】:How to map or zip a simple array to an array of arrays in JS with vanilla JS [duplicate]如何使用vanilla JS将简单数组映射或压缩到JS中的数组数组[重复]
【发布时间】:2022-01-19 19:44:27
【问题描述】:

我有一个食品类别数组,我想将每个类别与数组数组中的产品代码列表配对。

const categories = [ "dairy", "fruit", "breakfast", "frozen" ];  
const codes = [['2340', '89878', '9998'], ['89878'], ['987979', '984', '29898', '299'], ['0008', '2988'}]

类别和代码各有 10 个元素。我怎么能得到...

const onSale = {dairy:['2340', '89878', '9998'], fruit: ['89878'], breakfast:['987979', '984', '29898', '299'] , frozen: ['0008', '2988'}

我是新手,所以首选Vanilla JS。

【问题讨论】:

    标签: javascript arrays reactjs


    【解决方案1】:

    你可以使用传入map函数的第二个参数来知道这个元素在哪个索引。然后从另一个数组中提取匹配的索引。因为你想要一个结果对象,所以使用 fromEntries 来包装从 map 产生的数组。

    const categories = [ "dairy", "fruit", "breakfast", "frozen" ];  
    const codes = [['2340', '89878', '9998'], ['89878'], ['987979', '984', '29898', '299'], ['0008', '2988']];
    
    const onSale = Object.fromEntries(
      categories.map((cat, i) => [cat, codes[i]])
    );
    
    console.log(onSale)

    【讨论】:

      【解决方案2】:

      你可以通过reduce方法来实现,像这样:

      const categories = [ "dairy", "fruit", "breakfast", "frozen" ];  
      const codes = [['2340', '89878', '9998'], ['89878'], ['987979', '984', '29898', '299'], ['0008', '2988']]
      const onSales = categories.reduce((acc, key, index)=> {
          acc[key] = codes[index];
          return acc;
      }, {});
      console.log(onSales)

      【讨论】:

        猜你喜欢
        • 2015-04-23
        • 1970-01-01
        • 2020-05-15
        • 2018-01-23
        • 1970-01-01
        • 2021-07-17
        • 2021-02-10
        • 1970-01-01
        • 2019-08-25
        相关资源
        最近更新 更多